nginx反向代理目录及动静分离

简介:

                                                 nginx反向代理目录

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

架构:nginx+tomcat 各一台


配置一:

1      server {

3             listen 80;
4             server_name  aa.com;
5             root   html;
6             index  index.html index.htm index.php index.jsp;
7         location / {

9                proxy_pass  http://192.168.0.11:8080;

10                            }

11                }


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


配置二:

1             server {

3             listen 80;
4             server_name  aa.com;
5             
6             root   html;

8             index  index.html index.htm index.php index.jsp;

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 {

3             listen 80;
4             server_name  aa.com;
5             
6             root   html;

8             index  index.html index.htm index.php index.jsp;

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 {

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)



本文转自 wdy198622 51CTO博客,原文链接:http://blog.51cto.com/weimouren/1976525



相关文章
|
6月前
|
负载均衡 前端开发 应用服务中间件
Tomcat的负载均衡和动静分离(与nginx联动)
总的来说,负载均衡和动静分离是提高Web应用性能的两个重要手段。通过合理的配置和使用,我们可以让Web应用更好地服务于用户。
189 21
|
6月前
|
负载均衡 Java 应用服务中间件
Tomcat与Nginx的负载均衡与动静分离技巧
总的来说,Tomcat和Nginx各有各的优点,在负载均衡和动静分离这两方面它们都有很好的应用。灵活使用这两个工具能够让Web应用具有更好的扩展性和用户体验。
178 14
|
6月前
|
负载均衡 前端开发 JavaScript
LVS-DR模式、keepalived、Nginx与Tomcat合作,打造动静分离,高效负载均衡与高可用性
为了采用这样的架构,你需要对LVS-DR、Keepalived、Nginx与Tomcat有一定的理解和掌握,同时也需要投入一些时间去研究和配置,但是一旦你把它运行起来,你将会发现,这一切都是值得的。
235 11
|
9月前
|
应用服务中间件 PHP nginx
当你的nginx服务器和php服务器不在一起的时候,这个nginx 的root目录问题
两个服务器的网站代码目录需要对齐,docker容器里面也是一样
|
12月前
|
安全 应用服务中间件 网络安全
如何测试Nginx反向代理实现SSL加密访问的配置是否正确?
如何测试Nginx反向代理实现SSL加密访问的配置是否正确?
650 60
|
12月前
|
安全 应用服务中间件 网络安全
配置Nginx反向代理实现SSL加密访问的步骤是什么?
我们可以成功地配置 Nginx 反向代理实现 SSL 加密访问,为用户提供更安全、可靠的网络服务。同时,在实际应用中,还需要根据具体情况进行进一步的优化和调整,以满足不同的需求。SSL 加密是网络安全的重要保障,合理配置和维护是确保系统安全稳定运行的关键。
664 60
|
10月前
|
缓存 负载均衡 应用服务中间件
Nginx七层(应用层)反向代理:HTTP反向代理proxy_pass篇
通过使用Nginx的反向代理功能,可以有效地提高Web应用的性能、安全性和可扩展性。配置过程中需要注意不同场景下的具体需求,如负载均衡、SSL终止和缓存策略等。正确配置和优化Nginx反向代理可以显著提升系统的整体表现。
1537 20
|
11月前
|
缓存 Java 应用服务中间件
nginx的正向代理和反向代理以及tomcat
Nginx的正向代理和反向代理功能在不同的场景中具有重要作用,正向代理主要用于客户端访问控制和匿名浏览,而反向代理则用于负载均衡和高可用性服务。Tomcat作为Java Web应用服务器,与Nginx结合使用,可以显著提升Web应用的性能和稳定性。通过合理配置Nginx和Tomcat,可以构建高效、稳定和可扩展的Web服务架构。
414 11
|
11月前
|
存储 应用服务中间件 nginx
nginx反向代理bucket目录配置
该配置实现通过Nginx代理访问阿里云OSS存储桶中的图片资源。当用户访问代理域名下的图片URL(如 `http://代理域名/123.png`)时,Nginx会将请求转发到指定的OSS存储桶地址,并重写路径为 `/prod/files/2024/12/12/123.png`。
389 5
|
负载均衡 应用服务中间件 nginx
nginx-tomcat反向代理以及负载均衡测试
nginx-tomcat反向代理以及负载均衡测试
180 0