• home > tools > webServer > nginx >

    手把手以实例叫你学习nginx配置

    Author:zhoulujun@live.cn Date:

    手把手以实例叫你学习nginx配置,NGINX的proxy_redirect功能比较强大,其作用是对发送给客户端的URL进行修改。以例子说明:

    所谓手把手,就是把自己的nginx.conf配置文件copy出来,然后在仔细看代码!

    做了注释,最底下是最近的配置文件

     

    #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 {

    #               比如监听 80端口下服务

        listen       80;

    #               监听地址

            server_name  localhost;

    #          NGINX的proxy_redirect功能比较强大,其作用是对发送给客户端的URL进行修改。以例子说明:

    #                    server {

     #                       listen       80;

     #                       server_name  localhost;

     #                       location  {

    #                           proxy_pass http://10.10.10.1:9080;

    #                           }

    #                       }

    #       这段配置一般情况下都正常,但偶尔会出错, 错误在什么地方呢? 抓包发现服务器给客户端的跳转指令里加了端口号,如 Location: http://test.abc.com:9080/abc.html 。因为nginx服务器侦听的是80端口,所以这样的URL给了客户端,必然会出错.针对这种情况, 加一条proxy_redirect指令: proxy_redirect http://test.abc.com:9080/ / ,把所有“http://test.abc.com:9080/”的内容替换成“/”再发给客户端,就解决了。

    #              server {

    #                       listen       80;

    #                       server_name  test.abc.com;

    #                       proxy_redirect http://test.abc.com:9080/ /;

    #                       location / {

    #                           proxy_pass http://10.10.10.1:9080;

    #                       }

    #                 }

    #

     

             proxy_redirect http://192.168.1.85:8080/jsse/ /;

     

    #              例子,有如下匹配规则:

    #               location = / {

    #                      #规则A

    #                         }

    #              location = /login {

    #                    #规则B

    #              }

    #              location ^~ /static/ {

    #                    #规则C

    #              }

    #              location ~ \.(gif|jpg|png|js|css)$ {

    #                    #规则D

    #              }

    #              location ~* \.png$ {

    #                   #规则E

    #              }

    #              location !~ \.xhtml$ {

    #                      #规则F

    #              }

    #              location !~* \.xhtml$ {

    #              #规则G

    #              }

    #              location / {

    #              #规则H

    #              }

    #              那么产生的效果如下:

    #              访问根目录/, 比如http://localhost/ 将匹配规则A

    #              访问 http://localhost/login 将匹配规则B,http://localhost/register 则匹配规则H

    #              访问 http://localhost/static/a.html 将匹配规则C

    #              访问 http://localhost/a.gif, http://localhost/b.jpg 将匹配规则D和规则E,但是规则D顺序优先,规则E不起作用,而 http://localhost/static/c.png 则优先匹配到规则C

    #              访问 http://localhost/a.PNG 则匹配规则E,而不会匹配规则D,因为规则E不区分大小写。

    #              访问 http://localhost/a.xhtml 不会匹配规则F和规则G,http://localhost/a.XHTML不会匹配规则G,因为不区分大小写。规则F,规则G属于排除法,符合匹配规则但是不会匹配到,所以想想看实际应用中哪里会用到。

    #              访问 http://localhost/category/id/1111 则最终匹配到规则H,因为以上规则都不匹配,这个时候应该是nginx转发请求给后端应用服务器,比如FastCGI(php),tomcat(jsp),nginx作为方向代理服务器存在。

    #                       防盗链

    #                       location ~* \.(gif|jpg|swf)$ {

        #                       valid_referers none blocked start.igrow.cn sta.igrow.cn;

        #                       if ($invalid_referer) {

        #                           rewrite ^/ http://$host/logo.png;

        #                       }

    #                       }

    #                       六、根据文件类型设置过期时间

    #                       location ~* \.(js|css|jpg|jpeg|gif|png|swf)$ {

        #                       if (-f $request_filename) {

            #                       expires 1h;

            #                       break;

        #                       }

    #                       }

    #                       七、禁止访问某个目录

    #                       location ~* \.(txt|doc)${

        #                       root /data/www/wwwroot/linuxtone/test;

        #                       deny all;

    #                       }

     

        location / {

    #          转发地址

        proxy_pass  http://localhost:8484;

            proxy_redirect          default;

        proxy_set_header        Host $host:$proxy_port;

        proxy_set_header        X-Real-IP $remote_addr;

        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;

        }

     

        location /jsse/ {

        proxy_pass  http://192.168.1.85:8080/jsse/;

        proxy_redirect          default;

        proxy_set_header        Host $host:$proxy_port;

        proxy_set_header        X-Real-IP $remote_addr;

        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;

        }

     

     

        }

     

     

        server {

            listen       8038;

            server_name  localhost;

     

            #charset koi8-r;

     

            #access_log  logs/host.access.log  main;

     

            location / {

                root   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   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;

            #}

        }

     

     

     

     

        # another virtual host using mix of IP-, name-, and port-based configuration

        #

        #server {

        #    listen       8000;

        #    listen       somename:8080;

        #    server_name  somename  alias  another.alias;

     

        #    location / {

        #        root   html;

        #        index  index.html index.htm;

        #    }

        #}

     

     

        # HTTPS server

        #

        #server {

        #    listen       443 ssl;

        #    server_name  localhost;

     

        #    ssl_certificate      cert.pem;

        #    ssl_certificate_key  cert.key;

     

        #    ssl_session_cache    shared:SSL:1m;

        #    ssl_session_timeout  5m;

     

        #    ssl_ciphers  HIGH:!aNULL:!MD5;

        #    ssl_prefer_server_ciphers  on;

     

        #    location / {

        #        root   html;

        #        index  index.html index.htm;

        #    }

        #}

     

    }



    #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 {
    #               比如监听 80端口下服务
          listen       80;
    #               监听地址
           server_name  localhost;
    #          NGINX的proxy_redirect功能比较强大,其作用是对发送给客户端的URL进行修改。以例子说明:
    #                    server {
    #                       listen       80;
    #                       server_name  localhost;
    #                       location  {
    #                           proxy_pass http://10.10.10.1:9080;
    #                           }
    #                       }
    #       这段配置一般情况下都正常,但偶尔会出错, 错误在什么地方呢? 抓包发现服务器给客户端的跳转指令里加了端口号,如 Location: http://test.abc.com:9080/abc.html 。因为nginx服务器侦听的是80端口,所以这样的URL给了客户端,必然会出错.针对这种情况, 加一条proxy_redirect指令: proxy_redirect http://test.abc.com:9080/ / ,把所有“http://test.abc.com:9080/”的内容替换成“/”再发给客户端,就解决了。
    #              server {
    #                       listen       80;
    #                       server_name  test.abc.com;
    #                       proxy_redirect http://test.abc.com:9080/ /;
    #                       location / {
    #                           proxy_pass http://10.10.10.1:9080;
    #                       }
    #                 }
    #

            proxy_redirect http://192.168.1.85:8080/jsse/ /;

    #              例子,有如下匹配规则:
    #               location = / {
    #                      #规则A
    #                         }
    #              location = /login {
    #                    #规则B
    #              }
    #              location ^~ /static/ {
    #                    #规则C
    #              }
    #              location ~ \.(gif|jpg|png|js|css)$ {
    #                    #规则D
    #              }
    #              location ~* \.png$ {
    #                   #规则E
    #              }
    #              location !~ \.xhtml$ {
    #                      #规则F
    #              }
    #              location !~* \.xhtml$ {
    #              #规则G
    #              }
    #              location / {
    #              #规则H
    #              }
    #              那么产生的效果如下:
    #              访问根目录/, 比如http://localhost/ 将匹配规则A
    #              访问 http://localhost/login 将匹配规则B,http://localhost/register 则匹配规则H
    #              访问 http://localhost/static/a.html 将匹配规则C
    #              访问 http://localhost/a.gif, http://localhost/b.jpg 将匹配规则D和规则E,但是规则D顺序优先,规则E不起作用,而 http://localhost/static/c.png 则优先匹配到规则C
    #              访问 http://localhost/a.PNG 则匹配规则E,而不会匹配规则D,因为规则E不区分大小写。
    #              访问 http://localhost/a.xhtml 不会匹配规则F和规则G,http://localhost/a.XHTML不会匹配规则G,因为不区分大小写。规则F,规则G属于排除法,符合匹配规则但是不会匹配到,所以想想看实际应用中哪里会用到。
    #              访问 http://localhost/category/id/1111 则最终匹配到规则H,因为以上规则都不匹配,这个时候应该是nginx转发请求给后端应用服务器,比如FastCGI(php),tomcat(jsp),nginx作为方向代理服务器存在。
    #                       防盗链
    #                       location ~* \.(gif|jpg|swf)$ {
       #                       valid_referers none blocked start.igrow.cn sta.igrow.cn;
       #                       if ($invalid_referer) {
       #                           rewrite ^/ http://$host/logo.png;
       #                       }
    #                       }
    #                       六、根据文件类型设置过期时间
    #                       location ~* \.(js|css|jpg|jpeg|gif|png|swf)$ {
       #                       if (-f $request_filename) {
           #                       expires 1h;
           #                       break;
       #                       }
    #                       }
    #                       七、禁止访问某个目录
    #                       location ~* \.(txt|doc)${
       #                       root /data/www/wwwroot/linuxtone/test;
       #                       deny all;
    #                       }

          location / {
    #          转发地址
             proxy_pass  http://localhost:8484;
                 proxy_redirect          default;
             proxy_set_header        Host $host:$proxy_port;
             proxy_set_header        X-Real-IP $remote_addr;
             proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
          }

          location /jsse/ {
             proxy_pass  http://192.168.1.85:8080/jsse/;
             proxy_redirect          default;
             proxy_set_header        Host $host:$proxy_port;
             proxy_set_header        X-Real-IP $remote_addr;
             proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
          }


       }


       server {
           listen       8038;
           server_name  localhost;

           #charset koi8-r;

           #access_log  logs/host.access.log  main;

           location / {
               root   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   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;
           #}
       }




       # another virtual host using mix of IP-, name-, and port-based configuration
       #
       #server {
       #    listen       8000;
       #    listen       somename:8080;
       #    server_name  somename  alias  another.alias;

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


       # HTTPS server
       #
       #server {
       #    listen       443 ssl;
       #    server_name  localhost;

       #    ssl_certificate      cert.pem;
       #    ssl_certificate_key  cert.key;

       #    ssl_session_cache    shared:SSL:1m;
       #    ssl_session_timeout  5m;

       #    ssl_ciphers  HIGH:!aNULL:!MD5;
       #    ssl_prefer_server_ciphers  on;

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

    }

    #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 {
    #               比如监听 80端口下服务
          listen       80;
    #               监听地址
           server_name  localhost;
    #          NGINX的proxy_redirect功能比较强大,其作用是对发送给客户端的URL进行修改。以例子说明:
    #                    server {
    #                       listen       80;
    #                       server_name  localhost;
    #                       location  {
    #                           proxy_pass http://10.10.10.1:9080;
    #                           }
    #                       }
    #       这段配置一般情况下都正常,但偶尔会出错, 错误在什么地方呢? 抓包发现服务器给客户端的跳转指令里加了端口号,如 Location: http://test.abc.com:9080/abc.html 。因为nginx服务器侦听的是80端口,所以这样的URL给了客户端,必然会出错.针对这种情况, 加一条proxy_redirect指令: proxy_redirect http://test.abc.com:9080/ / ,把所有“http://test.abc.com:9080/”的内容替换成“/”再发给客户端,就解决了。
    #              server {
    #                       listen       80;
    #                       server_name  test.abc.com;
    #                       proxy_redirect http://test.abc.com:9080/ /;
    #                       location / {
    #                           proxy_pass http://10.10.10.1:9080;
    #                       }
    #                 }
    #

            proxy_redirect http://192.168.1.85:8080/jsse/ /;

    #              例子,有如下匹配规则:
    #               location = / {
    #                      #规则A
    #                         }
    #              location = /login {
    #                    #规则B
    #              }
    #              location ^~ /static/ {
    #                    #规则C
    #              }
    #              location ~ \.(gif|jpg|png|js|css)$ {
    #                    #规则D
    #              }
    #              location ~* \.png$ {
    #                   #规则E
    #              }
    #              location !~ \.xhtml$ {
    #                      #规则F
    #              }
    #              location !~* \.xhtml$ {
    #              #规则G
    #              }
    #              location / {
    #              #规则H
    #              }
    #              那么产生的效果如下:
    #              访问根目录/, 比如http://localhost/ 将匹配规则A
    #              访问 http://localhost/login 将匹配规则B,http://localhost/register 则匹配规则H
    #              访问 http://localhost/static/a.html 将匹配规则C
    #              访问 http://localhost/a.gif, http://localhost/b.jpg 将匹配规则D和规则E,但是规则D顺序优先,规则E不起作用,而 http://localhost/static/c.png 则优先匹配到规则C
    #              访问 http://localhost/a.PNG 则匹配规则E,而不会匹配规则D,因为规则E不区分大小写。
    #              访问 http://localhost/a.xhtml 不会匹配规则F和规则G,http://localhost/a.XHTML不会匹配规则G,因为不区分大小写。规则F,规则G属于排除法,符合匹配规则但是不会匹配到,所以想想看实际应用中哪里会用到。
    #              访问 http://localhost/category/id/1111 则最终匹配到规则H,因为以上规则都不匹配,这个时候应该是nginx转发请求给后端应用服务器,比如FastCGI(php),tomcat(jsp),nginx作为方向代理服务器存在。
    #                       防盗链
    #                       location ~* \.(gif|jpg|swf)$ {
       #                       valid_referers none blocked start.igrow.cn sta.igrow.cn;
       #                       if ($invalid_referer) {
       #                           rewrite ^/ http://$host/logo.png;
       #                       }
    #                       }
    #                       六、根据文件类型设置过期时间
    #                       location ~* \.(js|css|jpg|jpeg|gif|png|swf)$ {
       #                       if (-f $request_filename) {
           #                       expires 1h;
           #                       break;
       #                       }
    #                       }
    #                       七、禁止访问某个目录
    #                       location ~* \.(txt|doc)${
       #                       root /data/www/wwwroot/linuxtone/test;
       #                       deny all;
    #                       }

          location / {
    #          转发地址
             proxy_pass  http://localhost:8484;
                 proxy_redirect          default;
             proxy_set_header        Host $host:$proxy_port;
             proxy_set_header        X-Real-IP $remote_addr;
             proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
          }

          location /jsse/ {
             proxy_pass  http://192.168.1.85:8080/jsse/;
             proxy_redirect          default;
             proxy_set_header        Host $host:$proxy_port;
             proxy_set_header        X-Real-IP $remote_addr;
             proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
          }


       }


       server {
           listen       8038;
           server_name  localhost;

           #charset koi8-r;

           #access_log  logs/host.access.log  main;

           location / {
               root   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   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;
           #}
       }




       # another virtual host using mix of IP-, name-, and port-based configuration
       #
       #server {
       #    listen       8000;
       #    listen       somename:8080;
       #    server_name  somename  alias  another.alias;

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


       # HTTPS server
       #
       #server {
       #    listen       443 ssl;
       #    server_name  localhost;

       #    ssl_certificate      cert.pem;
       #    ssl_certificate_key  cert.key;

       #    ssl_session_cache    shared:SSL:1m;
       #    ssl_session_timeout  5m;

       #    ssl_ciphers  HIGH:!aNULL:!MD5;
       #    ssl_prefer_server_ciphers  on;

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

    }

    #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 {
    #               比如监听 80端口下服务
          listen       80;
    #               监听地址
           server_name  localhost;
    #          NGINX的proxy_redirect功能比较强大,其作用是对发送给客户端的URL进行修改。以例子说明:
    #                    server {
    #                       listen       80;
    #                       server_name  localhost;
    #                       location  {
    #                           proxy_pass http://10.10.10.1:9080;
    #                           }
    #                       }
    #       这段配置一般情况下都正常,但偶尔会出错, 错误在什么地方呢? 抓包发现服务器给客户端的跳转指令里加了端口号,如 Location: http://test.abc.com:9080/abc.html 。因为nginx服务器侦听的是80端口,所以这样的URL给了客户端,必然会出错.针对这种情况, 加一条proxy_redirect指令: proxy_redirect http://test.abc.com:9080/ / ,把所有“http://test.abc.com:9080/”的内容替换成“/”再发给客户端,就解决了。
    #              server {
    #                       listen       80;
    #                       server_name  test.abc.com;
    #                       proxy_redirect http://test.abc.com:9080/ /;
    #                       location / {
    #                           proxy_pass http://10.10.10.1:9080;
    #                       }
    #                 }
    #

            proxy_redirect http://192.168.1.85:8080/jsse/ /;

    #              例子,有如下匹配规则:
    #               location = / {
    #                      #规则A
    #                         }
    #              location = /login {
    #                    #规则B
    #              }
    #              location ^~ /static/ {
    #                    #规则C
    #              }
    #              location ~ \.(gif|jpg|png|js|css)$ {
    #                    #规则D
    #              }
    #              location ~* \.png$ {
    #                   #规则E
    #              }
    #              location !~ \.xhtml$ {
    #                      #规则F
    #              }
    #              location !~* \.xhtml$ {
    #              #规则G
    #              }
    #              location / {
    #              #规则H
    #              }
    #              那么产生的效果如下:
    #              访问根目录/, 比如http://localhost/ 将匹配规则A
    #              访问 http://localhost/login 将匹配规则B,http://localhost/register 则匹配规则H
    #              访问 http://localhost/static/a.html 将匹配规则C
    #              访问 http://localhost/a.gif, http://localhost/b.jpg 将匹配规则D和规则E,但是规则D顺序优先,规则E不起作用,而 http://localhost/static/c.png 则优先匹配到规则C
    #              访问 http://localhost/a.PNG 则匹配规则E,而不会匹配规则D,因为规则E不区分大小写。
    #              访问 http://localhost/a.xhtml 不会匹配规则F和规则G,http://localhost/a.XHTML不会匹配规则G,因为不区分大小写。规则F,规则G属于排除法,符合匹配规则但是不会匹配到,所以想想看实际应用中哪里会用到。
    #              访问 http://localhost/category/id/1111 则最终匹配到规则H,因为以上规则都不匹配,这个时候应该是nginx转发请求给后端应用服务器,比如FastCGI(php),tomcat(jsp),nginx作为方向代理服务器存在。
    #                       防盗链
    #                       location ~* \.(gif|jpg|swf)$ {
       #                       valid_referers none blocked start.igrow.cn sta.igrow.cn;
       #                       if ($invalid_referer) {
       #                           rewrite ^/ http://$host/logo.png;
       #                       }
    #                       }
    #                       六、根据文件类型设置过期时间
    #                       location ~* \.(js|css|jpg|jpeg|gif|png|swf)$ {
       #                       if (-f $request_filename) {
           #                       expires 1h;
           #                       break;
       #                       }
    #                       }
    #                       七、禁止访问某个目录
    #                       location ~* \.(txt|doc)${
       #                       root /data/www/wwwroot/linuxtone/test;
       #                       deny all;
    #                       }

          location / {
    #          转发地址
             proxy_pass  http://localhost:8484;
                 proxy_redirect          default;
             proxy_set_header        Host $host:$proxy_port;
             proxy_set_header        X-Real-IP $remote_addr;
             proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
          }

          location /jsse/ {
             proxy_pass  http://192.168.1.85:8080/jsse/;
             proxy_redirect          default;
             proxy_set_header        Host $host:$proxy_port;
             proxy_set_header        X-Real-IP $remote_addr;
             proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
          }


       }


       server {
           listen       8038;
           server_name  localhost;

           #charset koi8-r;

           #access_log  logs/host.access.log  main;

           location / {
               root   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   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;
           #}
       }




       # another virtual host using mix of IP-, name-, and port-based configuration
       #
       #server {
       #    listen       8000;
       #    listen       somename:8080;
       #    server_name  somename  alias  another.alias;

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


       # HTTPS server
       #
       #server {
       #    listen       443 ssl;
       #    server_name  localhost;

       #    ssl_certificate      cert.pem;
       #    ssl_certificate_key  cert.key;

       #    ssl_session_cache    shared:SSL:1m;
       #    ssl_session_timeout  5m;

       #    ssl_ciphers  HIGH:!aNULL:!MD5;
       #    ssl_prefer_server_ciphers  on;

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

    }

    #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 {
    #               比如监听 80端口下服务
          listen       80;
    #               监听地址
           server_name  localhost;
    #          NGINX的proxy_redirect功能比较强大,其作用是对发送给客户端的URL进行修改。以例子说明:
    #                    server {
    #                       listen       80;
    #                       server_name  localhost;
    #                       location  {
    #                           proxy_pass http://10.10.10.1:9080;
    #                           }
    #                       }
    #       这段配置一般情况下都正常,但偶尔会出错, 错误在什么地方呢? 抓包发现服务器给客户端的跳转指令里加了端口号,如 Location: http://test.abc.com:9080/abc.html 。因为nginx服务器侦听的是80端口,所以这样的URL给了客户端,必然会出错.针对这种情况, 加一条proxy_redirect指令: proxy_redirect http://test.abc.com:9080/ / ,把所有“http://test.abc.com:9080/”的内容替换成“/”再发给客户端,就解决了。
    #              server {
    #                       listen       80;
    #                       server_name  test.abc.com;
    #                       proxy_redirect http://test.abc.com:9080/ /;
    #                       location / {
    #                           proxy_pass http://10.10.10.1:9080;
    #                       }
    #                 }
    #

            proxy_redirect http://192.168.1.85:8080/jsse/ /;

    #              例子,有如下匹配规则:
    #               location = / {
    #                      #规则A
    #                         }
    #              location = /login {
    #                    #规则B
    #              }
    #              location ^~ /static/ {
    #                    #规则C
    #              }
    #              location ~ \.(gif|jpg|png|js|css)$ {
    #                    #规则D
    #              }
    #              location ~* \.png$ {
    #                   #规则E
    #              }
    #              location !~ \.xhtml$ {
    #                      #规则F
    #              }
    #              location !~* \.xhtml$ {
    #              #规则G
    #              }
    #              location / {
    #              #规则H
    #              }
    #              那么产生的效果如下:
    #              访问根目录/, 比如http://localhost/ 将匹配规则A
    #              访问 http://localhost/login 将匹配规则B,http://localhost/register 则匹配规则H
    #              访问 http://localhost/static/a.html 将匹配规则C
    #              访问 http://localhost/a.gif, http://localhost/b.jpg 将匹配规则D和规则E,但是规则D顺序优先,规则E不起作用,而 http://localhost/static/c.png 则优先匹配到规则C
    #              访问 http://localhost/a.PNG 则匹配规则E,而不会匹配规则D,因为规则E不区分大小写。
    #              访问 http://localhost/a.xhtml 不会匹配规则F和规则G,http://localhost/a.XHTML不会匹配规则G,因为不区分大小写。规则F,规则G属于排除法,符合匹配规则但是不会匹配到,所以想想看实际应用中哪里会用到。
    #              访问 http://localhost/category/id/1111 则最终匹配到规则H,因为以上规则都不匹配,这个时候应该是nginx转发请求给后端应用服务器,比如FastCGI(php),tomcat(jsp),nginx作为方向代理服务器存在。
    #                       防盗链
    #                       location ~* \.(gif|jpg|swf)$ {
       #                       valid_referers none blocked start.igrow.cn sta.igrow.cn;
       #                       if ($invalid_referer) {
       #                           rewrite ^/ http://$host/logo.png;
       #                       }
    #                       }
    #                       六、根据文件类型设置过期时间
    #                       location ~* \.(js|css|jpg|jpeg|gif|png|swf)$ {
       #                       if (-f $request_filename) {
           #                       expires 1h;
           #                       break;
       #                       }
    #                       }
    #                       七、禁止访问某个目录
    #                       location ~* \.(txt|doc)${
       #                       root /data/www/wwwroot/linuxtone/test;
       #                       deny all;
    #                       }

          location / {
    #          转发地址
             proxy_pass  http://localhost:8484;
                 proxy_redirect          default;
             proxy_set_header        Host $host:$proxy_port;
             proxy_set_header        X-Real-IP $remote_addr;
             proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
          }

          location /jsse/ {
             proxy_pass  http://192.168.1.85:8080/jsse/;
             proxy_redirect          default;
             proxy_set_header        Host $host:$proxy_port;
             proxy_set_header        X-Real-IP $remote_addr;
             proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
          }


       }


       server {
           listen       8038;
           server_name  localhost;

           #charset koi8-r;

           #access_log  logs/host.access.log  main;

           location / {
               root   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   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;
           #}
       }




       # another virtual host using mix of IP-, name-, and port-based configuration
       #
       #server {
       #    listen       8000;
       #    listen       somename:8080;
       #    server_name  somename  alias  another.alias;

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


       # HTTPS server
       #
       #server {
       #    listen       443 ssl;
       #    server_name  localhost;

       #    ssl_certificate      cert.pem;
       #    ssl_certificate_key  cert.key;

       #    ssl_session_cache    shared:SSL:1m;
       #    ssl_session_timeout  5m;

       #    ssl_ciphers  HIGH:!aNULL:!MD5;
       #    ssl_prefer_server_ciphers  on;

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

    }


    nginx


    转载本站文章《手把手以实例叫你学习nginx配置》,
    请注明出处:https://www.zhoulujun.cn/html/tools/webServer/nginx/2016_0229_7652.html