• nginx使用指南


    1。执行nginx

    能够执行nginx命令开启nginx:

    nginx

    假设nginx已经开启了,能够执行nginx命令加-s 參数来控制nginx的执行

    nginx -s signal
    signal的值:

    • stop — 高速关闭
    • quit — 优雅的关闭
    • reload — 又一次载入配置文件
    • reopen — 又一次打开日志文件 

    比如:要等nginx处理完当前的请求后关闭nginx能够用以下的命令

    nginx -s quit

                改动了配置文件后须要执行以下的命令

    nginx -s reload

    2,简单配置nginx

    打开配置文件。一般在/etc/nginx/nginx.cnf中。按照自己安装參数而定。

    nginx.conf 中已经包括了一个server块的配置案例,只是是凝视掉的。以下是一个server块的基本配置

    http {
        server {
        }
    }

    server块以下能够配置一些location来指定请求url相应的本地资源

    location / {
        root /data/www;
    }
    上面表示全部的/ 以下的訪问资源都在/data/www 目录以下


    location /images/ {
        root /data;
    }
    这个表示全部/images/路径訪问的图片都在/data以下


    那么上面的统一配置就是

    server {
        
        listen 8080;
    
    
      location / { root /data/www; }
    location /images/ { root /data; }
    }

    假设我訪问http://localhost/images/example.png的话。nginx就会返回文件文件夹中/data/images/以下的example.png图片返回给client

    假设我訪问http://localhost/some/example.html的话,nginx就会返回文件文件夹中/data/www/以下的example.html图片返回给client

    listen能够不指定。默认是8080

    假设在执行期间改动了配置执行

    nginx -s reload

    假设配置验证通,但没有依照约定訪问到指定的文件能够查看/usr/local/nginx/logs 或/var/log/nginx以下的日志文件access.logerror.log


    3,配置反向代理

    server {
        location / {
            proxy_pass http://localhost:8080;
        }
    
        location /images/ {
            root /data;
        }
    }

    proxy_pass指定反向代理的路径,全部符合/的路径都会到http://localhost:8080中获取资源

    如:http://192.168.1.100/some/example.html 訪问的资源 事实上是 http://localhost/some/example.html获取的资源,这些对client是透明的。


    4,主机名

    服务器名称通过server_name指令指定,它决定哪个server来处理哪个请求.server_name 能够通过通配符,正则指定。

    server {
        listen       80;
        server_name  example.org  www.example.org;
        ...
    }
    
    server {
        listen       80;
        server_name  *.example.org;
        ...
    }
    
    server {
        listen       80;
        server_name  mail.*;
        ...
    }
    
    server {
        listen       80;
        server_name  ~^(?<user>.+).example.net$;
        ...
    }
    当一个请求同一时候满足多个主机名的时候优先选择的主机名有例如以下顺序。

    1,全名称。准确的名称。

    2。最长的通过*开头的通配符名称“*.example.org

    3,最长的通过*结尾的通配符名称“mail.*

    4,第一个匹配正則表達式的虚拟主机名

    通配符仅仅能在主机名的開始和结束使用,“www.*.example.org”和“w*.example.org” 都是错误的写法,假设须要匹配这样的模式能够通过正則表達式指定,如“~^www..+.example.org$” and“~^w.*.example.org$”。

    星号代理主机名的一部分“*.example.org”不仅代表www.example.com还代表www.sub.example.com.example.org既能够代表example.org也能够代表*.example.org。

    假设要使用正則表達式。主机名必须以波浪符~開始

    server_name  ~^wwwd+.example.net$;
    假设不是以波浪符号~还是,那么它被觉得是一个全主机名。

    假设正則表達式主机名中包括*,那么它被觉得是一个通配符主机名。^和$是必需的。他们是语法和逻辑上的要求。

    通过正则捕获能够再后面的变量中引用

    server {
        server_name   ~^(www.)?

    (?

    <domain>.+)$; location / { root /sites/$domain; } }

    正则表达捕获能够支持例如以下的语法

    ?

    <name>

    Perl 5.10 compatible syntax, supported since PCRE-7.0
    ?'name' Perl 5.10 compatible syntax, supported since PCRE-7.0
    ?P<name> Python compatible syntax, supported since PCRE-4.0
    正则捕获也能够通过数字參数获取

    server {
        server_name   ~^(www.)?

    (.+)$; location / { root /sites/$2; } }

    $2匹配第二个括号里的正則表達式匹配的内容。

    混合主机名

    server {
        listen       80;
        server_name  example.org  www.example.org  "";
        ...
    }
    假设nginx没有能够匹配请求的url主机名的server模块,则默认返回空的主机名来响应请求。

    假设用户通过ip訪问,这server_name能够配置ip主机名来响应请求

    server {
        listen       80;
        server_name  example.org
                     www.example.org
                     ""
                     192.168.1.1
                     ;
        ...
    }
    -表示的主机名代表了全部错误的主机名

    server {
        listen       80  default_server;
        server_name  _;
        return       444;
    }

    在有些时候你可能会訪问*.example.com 但当中包好 www.example.com和example.com 且这两个訪问跟频繁,最好配置成这样

    server {
        listen       80;
        server_name  example.org  www.example.org  *.example.org;
        ...
    }
    而不要是这样

    server {
        listen       80;
        server_name  .example.org;
        ...
    }

    假设主机名过长须要在http模块中改动參数

    server_names_hash_bucket_size
    这个參数的值能够使32或64,取决于你的cpu缓存栈的大小

    假设你将他设为32,但你的服务器名称非常长如:too.long.server.name.example.org。那么它会报错

    could not build the server_names_hash,
    you should increase server_names_hash_bucket_size: 32
    你必需要把它的參数设成两倍


    http {
        server_names_hash_bucket_size  64;
        ...

    假设配置的主机名过多就会报这个错

    could not build the server_names_hash,
    you should increase either server_names_hash_max_size: 512
    or server_names_hash_bucket_size: 32
    解决方法是尽可能地将server_names_hash_max_size设置的和主机名的个数一样,假设这个配置起不了做用,或配置后导致nginx的启动时间过长的话,就添加server_names_hash_bucket_size的值

  • 相关阅读:
    jsp生成xml文件示例
    jsp分页显示
    Spring AOP学习笔记
    让leeon不再眷念马桶——书评《精通正则表达式》
    用JSP实现上传文件的两种方法
    oracle sql性能优化
    Iron Speed Designer 4.2.2学习
    再议《JavaScript代码优化一例》
    有关《大道至简》的几点讨论~
    有源则至清——我读《移山之道》
  • 原文地址:https://www.cnblogs.com/slgkaifa/p/6855230.html
Copyright © 2020-2023  润新知