非常有用的nginx配置

2023-02-21  本文已影响0人  liurongming

#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       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  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    server {
        listen       80;
        server_name localhost 172.18.5.152;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

      
        location / {
            #root   html;
            # index  index.html index.htm;
            
            rewrite ^/(.*)$ /man/$1 last;
        }
        
        location /man {
            alias   C:/Users/Public/www;
            autoindex on;
        }

        location /api {
            rewrite ^.+api/?(.*)$ /$1 break;
            include uwsgi_params;
            proxy_pass http://172.18.5.175:9999;
        }
        
        #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   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;
        #}
    }

    server {
        listen  80;
        server_name man.xxx.com;
        #access_log /var/log/nginx/pro.log;

        location  / {
             # 传递真实的请求头信息
             proxy_set_header Host $host;
             proxy_set_header X-Real-IP $remote_addr;
             proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
             # 限制文件大小为1G 
             client_max_body_size    10240m; 
             
             rewrite ^/(.*)$ /man/$1 last;
        }
        
        location ~* ^/man/.*$ {  
            proxy_pass http://172.18.5.152:80;  
        }  
    
        error_page 500 502 503 504  /50x.html;
        location = /50x.html {
            root html;
        }
    }

}

解决外网映射端口和nginx监听端口不一致问题,
例如外层是通过路由器映射一个任意端口,例如10080,而nginx依然使用80端口。
此场景,可以这样使用。
1、关闭 absolute_redirect off;
2、或者使用 rewrite /([A-Za-z0-9_%-]+)1/ permanent;
二者选择其一,都可以解决。

location /tsweb/ {
        # autoindex on;
       absolute_redirect off;
       # rewrite \/([A-Za-z0-9_%\-]+)$ $1/ permanent;

        # 不缓存html,防止程序更新后缓存继续生效
        if ($request_filename ~* .*\.(?:htm|html)$) {
                add_header Cache-Control "private, no-store, no-cache, must-revalidate, proxy-revalidate";
                access_log on;
        }
        alias /srv/webapps/tsweb/; # 静态文件nginx处理
        index  index.html index.htm;
    }

案例:
ubuntu 操作系统下,nginx完整配置案例参考

# 开启gzip压缩
# 进入路径:/etc/nginx
root@vbs3-ubt2004-prod-nginx8701:/etc/nginx# cat nginx.conf
user www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;

events {
    worker_connections 768;
    # multi_accept on;
}

http {

    ##
    # Basic Settings
    ##

    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 65;
    types_hash_max_size 2048;
    # server_tokens off;

    # server_names_hash_bucket_size 64;
    # server_name_in_redirect off;

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

    ##
    # SSL Settings
    ##

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; # Dropping SSLv3, ref: POODLE
    ssl_prefer_server_ciphers on;

    ##
    # Logging Settings
    ##

    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;

    ##
    # Gzip Settings
    ##

    #gzip on;
        gzip  on;
        gzip_http_version  1.1;
        gzip_min_length    1k;
        gzip_buffers       40 16k;
        gzip_comp_level    4;
        gzip_types         text/plain application/x-javascript text/css application/xml text/javascript application/x-httpd-php application/javascript application/json;
        gzip_disable       "MSIE [1-6]\.";
        gzip_vary          on;

    # gzip_vary on;
    # gzip_proxied any;
    # gzip_comp_level 6;
    # gzip_buffers 16 8k;
    # gzip_http_version 1.1;
    # gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

    ##
    # Virtual Host Configs
    ##

    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;
}


#mail {
#   # See sample authentication script at:
#   # http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript
#
#   # auth_http localhost/auth.php;
#   # pop3_capabilities "TOP" "USER";
#   # imap_capabilities "IMAP4rev1" "UIDPLUS";
#
#   server {
#       listen     localhost:110;
#       protocol   pop3;
#       proxy      on;
#   }
#
#   server {
#       listen     localhost:143;
#       protocol   imap;
#       proxy      on;
#   }
#}
root@vbs3-ubt2004-prod-nginx8701:/etc/nginx#/etc/nginx/conf.d


cd /etc/nginx/conf.d 实际业务配置

root@vbs3-ubt2004-prod-nginx8701:/etc/nginx/conf.d# cat jiangsu.conf
upstream hebei_gateway_server {
  server 172.168.114.91:8000 weight=1 max_fails=3 fail_timeout=60s;
  server 172.168.114.92:8000 weight=1 max_fails=3 fail_timeout=60s;
  keepalive 300;
}

server {
    listen  80;
    server_name 172.168.xx.87 1xx.4.1xx.x6;
    # access_log /var/log/nginx/pro.log;

    location  /{
         # 传递真实的请求头信息
         proxy_set_header Host $host;
         proxy_set_header X-Real-IP $remote_addr;
         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

     # 限制文件大小为10G
         client_max_body_size    10240m;

     # 允许跨域
     add_header Access-Control-Allow-Origin *;
         add_header Access-Control-Allow-Headers X-Requested-With;
         add_header Access-Control-Allow-Methods GET,POST,OPTIONS;

     # 指定代理服务器
         # proxy_pass http://127.0.0.1:8000;

     # 域名重写
         rewrite ^/(.*)$ /jiangsu/$1 last;
    }

    location ~ ^/service-.*$ {
     # 传递真实的请求头信息
         proxy_set_header Host $host;
         proxy_set_header X-Real-IP $remote_addr;
         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

     # 允许跨域
     add_header Access-Control-Allow-Origin *;
         add_header Access-Control-Allow-Headers X-Requested-With;
         add_header Access-Control-Allow-Methods GET,POST,OPTIONS;

     # rewrite ^.+api/?(.*)$ /$1 break;
     include uwsgi_params;
     proxy_pass http://hebei_gateway_server;

     proxy_http_version 1.1;
         proxy_set_header Upgrade $http_upgrade;
         proxy_set_header Connection "upgrade";

     # 调优
         client_max_body_size    10240m;
         client_body_buffer_size 256k;
         proxy_connect_timeout 900;
         proxy_read_timeout  900;
         proxy_send_timeout  900;
         proxy_buffer_size  32k;
         proxy_buffers   4 64k;
         proxy_busy_buffers_size 128k;
         proxy_temp_file_write_size 10m;
    }


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

    location /jiangsu/ {
    # autoindex on;
    absolute_redirect off;
    # 不缓存html,防止程序更新后缓存继续生效
    if ($request_filename ~* .*\.(?:htm|html)$) {
            add_header Cache-Control "private, no-store, no-cache, must-revalidate, proxy-revalidate";
        access_log on;
    }
        alias /srv/webapps/jiangsu/; # 静态文件nginx处理
    index  index.html index.htm;
    }

    location /tsweb/ {
    # autoindex on;
    absolute_redirect off;
    # rewrite \/([A-Za-z0-9_%\-]+)$ $1/ permanent;

    # 不缓存html,防止程序更新后缓存继续生效
    if ($request_filename ~* .*\.(?:htm|html)$) {
            add_header Cache-Control "private, no-store, no-cache, must-revalidate, proxy-revalidate";
        access_log on;
    }
        alias /srv/webapps/tsweb/jiangsu/; # 静态文件nginx处理
    index  index.html index.htm;
    }
}
上一篇下一篇

猜你喜欢

热点阅读