nginx反向代理目录

目的:域名aa.com访问tomcat项目时,实现指定到固定目录下,直接访问aa.com时报500错误

架构:nginx+tomcat 各一台


配置一:

1      server {
2
3             listen 80;
4             server_name  aa.com;
5             root   html;
6             index  index.html index.htm index.php index.jsp;
7         location / {
8
9                proxy_pass  http://192.168.0.11:8080;

10                            }

11                }


配置一实现的状态是,直接访问项目首页,正常代理


配置二:

1             server {
2
3             listen 80;
4             server_name  aa.com;
5            
6             root   html;
7
8             index  index.html index.htm index.php index.jsp;
9
10             location / {
11                  return 500;
12                        }
13
14             location /upload {
15
16                proxy_pass  http://192.168.0.11:8080/upload/;

17                                            }

18              }

配置二实现的状态是,aa.com访问时返回server500错误,只能访问aa.com/upload以及upload下边的目录,将其访问控制在upload目录下边。


配置三:

1             server {
2
3             listen 80;
4             server_name  aa.com;
5            
6             root   html;
7
8             index  index.html index.htm index.php index.jsp;
9
10             location / {

11                  root  /data/WEB;

12                  if ($request_uri ~* "\.(js|css|png|jpg|jpeg|bmp|mp3|swf)$"){

13                          expires 12h;

14                   }

15                  expires 24h;

16                        }

17             }

配置三实现状态是,aa.com只能访问在/data/WEB下边的文件,可以用于静态页面的配置


配置四:

1      server {
2
3             listen 80;
4             server_name  aa.com;
5             root   html;
6             index  index.html index.htm index.php index.jsp;

7             allow 192.168.0.110;

8             allow 192.168.0.210;

9             deny all;

10         location / {
11
12                proxy_pass  http://192.168.0.11:8080;

13                            }

14         }

配置四实现状态是,只允许192.168.0.110/192.168.0.210两个IP访问aa.com项目

黑白名单设置:

假如我们分析我们的网站被某个固定ip访问

219.143.33.50

只需要以下两步搞定

1:配置需要屏蔽的ip的配置文件

下面说明假定nginx的目录在/usr/local/nginx/conf

首先要建一个黑名单的配置文件blockips.conf,然后vi blockips.conf编辑此文件,在文件中输入要禁止访问的ip。

deny  219.143.33.50;
deny  192.168.1.110;

2:引入 ip配置文件,然后reload nginx

然后保存此文件,并且打开nginx.conf文件,在http配置节内添加下面一行配置:

include blockips.conf;

保存nginx.conf文件,然后测试现在的nginx配置文件是否是合法的:

 /usr/local/nginx/sbin/nginx -t

如果配置没有问题,就会输出:

the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
configuration file /usr/local/nginx/conf/nginx.conf test is successful

如果配置有问题就需要检查下哪儿有语法问题,如果没有问题,需要执行下面命令,让nginx重新载入配置文件。

/usr/local/nginx/sbin/nginx -s reload


配置五:

1    server {
2          listen       80 default;
3         server_name  "";
4         return       444;
5            }

或者

1     server {
2          listen       80 default;
3          return       444;
4                }

或者

1    server {
2          listen       80 default;
3         server_name  _;
4         return       500;
5            }

配置五实现状态是,设置主机名为空字符串以匹配未定义“Host”头的请求,而且返回了一个nginx特有的,非http标准的返回码444,它可以用来关闭连接,不允许IP访问


配置六:

  1     server {
  2
  3             listen 80;
  4             listen 443 ssl;
  5            server_name  aa.com;
  6             ssl_certificate /data/pam/200001.pem;
  7             ssl_certificate_key /data/pam/200001.key;
  8             ssl_session_timeout  5m;
  9             ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
 11            ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:

                                       AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
 12             ssl_prefer_server_ciphers  on;

 19             root   html;
 21             index  index.html index.htm index.php index.jsp;
 22             ## send request back to apache ##
 
 28             location / {
 29
 30                proxy_pass  http://192.168.0.110:8080;

 31                              }

 32                   }

配置六实现状态是,为nginx配置ssl证书用于https的使用


配置七:

upstream web {
  server 172.16.18.18:10012;
}
server {

    
    listen 80;
       server_name www.aaaa.com aaaa.com;
       root html;
       index index.jsp index.html index.htm;
      return 301 https://$server_name$request_uri;

       }
server {

        #listen 80 default;
        listen 443 ssl;
        server_name www.aaaa.com aaaa.com;
        root html;
        index index.jsp index.html index.htm;

        ssl_certificate .cert/214331000000046.pem;
        ssl_certificate_key .cert/214331000000046.key;
        ssl_session_timeout 5m;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;

        error_page 497  https://$host$uri?$args;
  

 location / {
#               index index.jsp index.html index.htm;
                proxy_pass http://web;
                proxy_set_header Host $host;                                                  #######***    实现主机、域名缓存读取头文件
                proxy_set_header  X-Real-IP        $remote_addr;
                proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for;
                proxy_set_header  X-Forwarded-Host $host;
                proxy_set_header  X-Forwarded-Proto $scheme;
                proxy_set_header  X-Forwarded-Server $host;                       *******##########
                proxy_redirect off;
                client_max_body_size 10m;
                client_body_buffer_size 128k;
                proxy_connect_timeout 300;
                proxy_read_timeout 300;
                proxy_buffer_size 128k;
                proxy_buffers 4 128k;
                proxy_busy_buffers_size 256k;
                proxy_temp_file_write_size 256k;
        }
}

配置七实现状态是:重定向http到https上,需要单独配置80和443,之后在80上重定向到443上  

配置八:

server {

                listen     80;

                server_name  aaaa.cn;

                location / {

                        proxy_pass http://127.0.0.1:90;

                        rewrite "^/+$" /popularize/a/web last;

                        proxy_cookie_path /popularize/a/web/ /;

                 }

          }

配置八实现状态是:访问aaa.cn时候,主页直接跳转到 /popularize/a/web/下(地址栏地址改变,变为aaa.cn/popularize/a/web/)


配置九:

server {

                listen     80;

                server_name  aa.cn;

                location ~ {

                        proxy_pass http://127.0.0.1:90;

                        rewrite ^/(.*) /popularize/a/web/$1 break;

                     }

         }

配置九实现状态是:访问aa.cn时候,主页直接访问/popularize/a/web/下(地址栏地址不变,仍为aaa.cn)




未完待续......