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)
未完待续......