Nginx 配置文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nginx 配置文件相关的知识,希望对你有一定的参考价值。

参考技术A 参考资料1
参考资料2
参考资料3

主配置文件 /etc/nginx/nginx.conf 。

配置文件中的 path,既可以是绝对路径也可以是相对路径,相对路径相对 /usr/share/nginx 目录。

通过 default_server 参数,指定当前 server 为对应 IP:PORT 对的默认服务器。当一个请求匹配到 IP:PORT,但是 Host 字段不匹配任何一个 server_name,则应用默认服务器 server。假设 http://www.lishiqing.com 请求的 IP:PORT 为 192.168.100.104:80,但是没有对应的 server_name 匹配 www.lishiqing.com ,则应用默认服务器。

如果没有一个 listen 指令具有 default_server 参数,则具有 IP:PORT 对的第一个 server 将是该 IP:PORT 对的默认服务器。

以下配置忽略 server_name,所有指向 192.168.100.105 的域名都能应用该 server

以下配置访问 lishiqing.com 应用默认 server,也就是第一个 server

参考资料

location 指令可以跟字符串,也可以跟正则表达式

location string_path 区分大小写的字符串
location = string_path 严格匹配字符串
location ~ reg_path 区分大小写的正则表达式
location ~* reg_path 不区分大小写的正则表达式

http://lishiqing.com/shop/images/1.png 这个请求的 query 为 /shop/images/1.png 。

当 location 后面是字符串的时候,如果某个请求的 query 以该字符串开头,则匹配该 location,比如 /shop/images/1.png 的请求匹配 location /shop ,也匹配 location / ,但是不匹配 location /blog 。

当 location 后面是正则表达式的时候,如果某个请求的 query 匹配该正则表达式,则匹配该 location,比如 /shop/images/1.png 的请求匹配 location ~ \.(jpg|jpeg|png)$ 。

如果某个 query 匹配多个字符串的 location,那么应用匹配度最高的一个 location,与 location 的顺序无关。比如 /shop/images/1.png 的请求匹配 location / 和 location /shop ,但是应用 location /shop 。

如果某个 query 匹配多个正则表达式的 location,那么按照 location 的顺序应用第一个匹配的 location。比如 /shop/images/1.png 的请求匹配 location ~ \.(jpg|jpeg|png)$ 和 location ~ .*/images/.* ,但是应用第一个匹配的 location ~ \.(jpg|jpeg|png)$ 。因为在 query 在检查正则表达式的时候,遇见第一匹配的 location 就停止继续查找了。

如果某个 query 既匹配某个字符串的 location,又匹配某个正则表达式的 location,那么应用正则表达式的 location,与顺序无关。比如 /shop/images/1.png 的请求匹配 location /shop 和 location ~ \.(jpg|jpeg|png)$ ,但是会应用 location ~ \.(jpg|jpeg|png)$ 。这是因为某个请求会先检查跟着字符串的 location,不管是否找到匹配的字符串 location,都会继续按照顺序查找跟着正则表达式 location,因此正则表达式的优先级高于字符串。如果找到了匹配的正则表达式,则立即停止查找,应用该 location,如果没找到匹配的正则表达式,则应用刚才找到的匹配度最高的字符串 location。

location = string_path 为严格匹配,query 必须与 string_path 完全一致才能匹配。如果 query 与某个 = string_path 匹配,则立即停止查找,应用该 location。意味着不会去查找正则表达式 location。比如 /shop/images/1.png 匹配 location = /shop/images/1.png ,不匹配 location = /shop 和 location = /shop/images 。一般用来设置 location = / 来匹配 / 的 query,因为 / 的 query 会很频繁,因此将 location = / 放在第一条 location 可以提高匹配查询的效率。

location ^~ string_path 这种字符串匹配的优先级高于正则表达式,当某个 query 匹配该 location 的时候,不会继续查找正则表达式的 location 了。比如 /shop/images/1.png 的 query 满足 location ^~ /shop 和 location ~ \.(jpg|jpeg|png)$ ,但是会应用 location ^~ /shop 。

总结:

nginx学习:配置文件及其组成

一:配置文件

etc是linux系统放置核心配置的文件夹

/etc/logrotate.d/nginx 配置文件 用于nginx日志轮转,logrotate服务的日志切割

/etc/nginx  目录配置文件  nginx的主要配置文件

/etc/nginx/nginx.conf 主要配置文件  nginx启动会读取的配置文件

/etc/nginx/conf.d 主要配置文件

/etc/nginx/conf.d/default/conf 主要配置文件  默认安装好之后,server加载读取的配置文件

 

/etc/nginx/nginx.conf

vim nginx,conf

user  nginx;

第一部分:全局块 配置运行nginx服务器组,允许产生worker process数,进程pid存放路径、日志存放路径以及配置文件的引入 worker_processes
1; # nginx服务器并发处理服务的关键配置,值越大,可以支持并发处理量就越多,但是会受到硬件、软件等设备的制约 error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid;

第二部分:events块:主要影响nginx服务器与用户的网络连接,常用的设置包括是否开启很多对worker process下的网络连接进行序列化,是否允许同时接受多个网络请求,选取那种事件驱动模型来处理请求,
每个worker process可以同时支持的最大连接数等。1024表示最大连接数位1024个,这部分的配置对nginx的性能影响较大,在实际中应该灵活配置。 events { worker_connections
1024; }

第三部分:http块:nginx配置里面配置最频繁的部分,代理、缓存和日志等绝大多数功能和第三方模块的配置都在这里。http块包括了:http全局块server块 http全局块 http { include
/etc/nginx/mime.types; default_type application/octet-stream; log_format main \'$remote_addr - $remote_user [$time_local] "$request" \' \'$status $body_bytes_sent "$http_referer" \' \'"$http_user_agent" "$http_x_forwarded_for"\'; access_log /var/log/nginx/access.log main; sendfile on; #tcp_nopush on; keepalive_timeout 65; #gzip on;

server块
默认的文件里面没有
nginx version: nginx/1.16.1 猜测这个版本里面需要自己配置

    include /etc/nginx/conf.d/*.conf;
}

 server的配置在conf.d里面的default.conf里面,启动后自己默认加载

 

server {
    listen       80;
    server_name  localhost;

    #charset koi8-r;
    #access_log  /var/log/nginx/host.access.log  main;

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
 #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    # proxy the PHP scripts to Apache listening on 127.0.0.1:80
    #
    #location ~ \\.php$ {
    #    proxy_pass   http://127.0.0.1;
    #}

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    #location ~ \\.php$ {
 #    root           html;
    #    fastcgi_pass   127.0.0.1:9000;
    #    fastcgi_index  index.php;
    #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
    #    include        fastcgi_params;
    #}

    # deny access to .htaccess files, if Apache\'s document root
    # concurs with nginx\'s one
    #
    #location ~ /\\.ht {
    #    deny  all;
    #}
}

 

二:真实项目中nginx.conf配置

user root;
worker_processes  1;

events {
    worker_connections  1024;
}


http {

    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;
    keepalive_timeout  65;

    #设置允许发布内容为8M
    client_max_body_size 20M;
    client_body_buffer_size 256k;

    upstream django_goat{
        server 127.0.0.1:8008;
    }
upstream django_cow{
        server 127.0.0.1:8009;
    }

    upstream trans{
        server 127.0.0.1:12700;
    }

    upstream cattle{
        server 0.0.0.0:12002;
    }

    upstream breed{
        server 0.0.0.0:12005;
    }

    upstream wxmanage{
        server 0.0.0.0:12003;
    }
upstream usermanage{
        server 0.0.0.0:12006;
    }

    upstream vaccinemanage{
        server 0.0.0.0:12007;
    }

    upstream drinkmanage{
        server 0.0.0.0:12008;
    }

    upstream inoutmanage{
        server 0.0.0.0:12009;
    }

    upstream monitormanage{
        server 0.0.0.0:12011;
    }

    upstream locationmanage{
        server 0.0.0.0:12012;
upstream configmanage{
        server 0.0.0.0:12013;
    }

    upstream bigdata{
        server 0.0.0.0:12015;
    }

    server {
        listen       80;
        listen 443 ssl;
        server_name  www.baoyangny.com;
        ssl_certificate 3367911_www.baoyangny.com.pem;
        ssl_certificate_key 3367911_www.baoyangny.com.key;
        ssl_session_timeout 5m;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #按照这个协议配置
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; #按照这个套件配置
        ssl_prefer_server_ciphers on;

        location / {
            root   html;
            index  index.html index.htm;

 }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        location /wxmanage {
            proxy_pass http://wxmanage;
        }

    }


    server {

        listen 80;
        listen 443 ssl;
        server_name goat.baoyangny.com;
        ssl_certificate 2513839_goat.baoyangny.com.pem;
        ssl_certificate_key 2513839_goat.baoyangny.com.key;
        ssl_session_timeout 5m;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #按照这个协议配置

ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; #按照这个套件配置
        ssl_prefer_server_ciphers on;


        location / {
            uwsgi_pass  django_goat;
            include     uwsgi_params;
        }

        location /static {
            alias /root/jgw/milk_goat/dist/static;
        }

        location /qldata {
            proxy_pass http://trans/index.html;
        }

        location /qlzy/api/v1/ {
            proxy_pass http://cattle;
        }

        location /qlcattle/api/v1/ {
proxy_pass http://cattle;
        }

        location /api/v1/breed {
            proxy_pass http://breed;
        }

        location /api/v1/user {
            proxy_pass http://usermanage;
        }

        location /api/v1/farm {
            proxy_pass http://usermanage;
        }

        location /api/v1/vaccine {
            proxy_pass http://vaccinemanage;
        }

        location /api/v1/drink {
            proxy_pass http://drinkmanage;
        }
location /api/v1/colony {
            proxy_pass http://inoutmanage;
        }

        location /qlzy/api/v1/monitor {
            proxy_pass http://monitormanage;
        }

        location /api/v1/bdlocation {
            proxy_pass http://locationmanage;
        }

        location /api/v1/big_data {
            proxy_pass http://bigdata;
        }

        location /api/v1/config_manager {
            proxy_pass http://configmanage;
        }

        location /loging {
            if ( $http_host ~* "^(.*)") {

        }     
location /loging {
            if ( $http_host ~* "^(.*)") {
                set $domain $1;
                rewrite ^(.*) http://goat.baoyangny.com/#/loging break;
            }
        }

        location /reging {
            if ( $http_host ~* "^(.*)") {
                set $domain $1;
                rewrite ^(.*) http://goat.baoyangny.com/#/reging break;
            }
        }


    }


    server {
listen 80;
        listen 443 ssl;
        server_name cow.baoyangny.com;
        ssl_certificate 2513843_cow.baoyangny.com.pem;
        ssl_certificate_key 2513843_cow.baoyangny.com.key;
        ssl_session_timeout 5m;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #按照这个协议配置
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; #按照这个套件配置
        ssl_prefer_server_ciphers on;


        location / {
            uwsgi_pass  django_cow;
            #uwsgi_pass  django_goat;
            include     uwsgi_params;
        }


        location /static {
            alias /root/jgw/milk_cow/dist/static;
            #alias /root/jgw/milk_goat/dist/static;
        }
location /qldata {
            proxy_pass http://trans/index.html;
        }

        location /qlcattle/api/v1/ {
            proxy_pass http://cattle;
        }

        location /mycattle/api/v1/ {
            proxy_pass http://cattle;
        }

        location /api/v1/breed {
            proxy_pass http://breed;
        }


        location /api/v1/user {
            proxy_pass http://usermanage;
        }

                                             
        location /api/v1/farm {
            proxy_pass http://usermanage;
        }

        location /api/v1/vaccine {
            proxy_pass http://vaccinemanage;
        }

        location /api/v1/drink {
            proxy_pass http://drinkmanage;
        }

        location /api/v1/colony {
            proxy_pass http://inoutmanage;
        }

        location /qlzy/api/v1/monitor {
            proxy_pass http://monitormanage;

 }

        location /api/v1/bdlocation {
            proxy_pass http://locationmanage;
        }

        location /api/v1/big_data {
            proxy_pass http://bigdata;
        }

        location /api/v1/config_manager {
            proxy_pass http://configmanage;
        }

        location /loging {
            if ( $http_host ~* "^(.*)") {
                set $domain $1;
                rewrite ^(.*) http://cow.baoyangny.com/#/loging break;
            }
        }

        location /reging {

if ( $http_host ~* "^(.*)") {
                set $domain $1;
                rewrite ^(.*) http://cow.baoyangny.com/#/reging break;
            }
        }

        location /qlzy/api/v1/ {
            proxy_pass http://cattle;
        }

    }
                                                                                                                                                                                                      

 

 

 

 

 

 

 

 

 

# TODO

 

以上是关于Nginx 配置文件的主要内容,如果未能解决你的问题,请参考以下文章

Nginx 配置文件

nginx学习:配置文件及其组成

[后端]nginx配置文件详解

linux 上修改了nginx.conf 怎么重新加载配置文件生效

Nginx配置文件说明

nginx配置文件详解