Nginx配置反向代理

Nginx配置反向代理

 

一、什么是反向代理

        反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。

 

反向代理的作用:

 

(1)保证内网的安全,可以使用反向代理提供WAF功能,阻止web攻击大型网站,通常将反向代理作为公网访问地址,Web服务器是内网。

(2)负载均衡,通过反向代理服务器来优化网站的负载。

 

二、反向代理实现

(1)我们要访问的内部应用服务器使用tomcat,所以需要安装两个tomcat。(准备工作:tomcat,Linux压缩包上传到虚拟机上)

(2)tomcat准备好过后,需要修改其中一个tomcat的server.xml配置文件,否则两个tomcat启动时端口号会冲突。(在tomcat/conf/server.xml,修改第一个和第二个都可以,我这里修改的为tomcat-test2)

保存修改。

(3)修改nginx配置文件,配置server。新增配置如下:

 
  1. upstream tomcat-test1 {

  2. server 192.168.200.132:8080;

  3. }

  4. server {

  5. listen 80;

  6. server_name www.tomcat1.com;

  7.  
  8. #charset koi8-r;

  9.  
  10. #access_log logs/host.access.log main;

  11.  
  12. location / {

  13. proxy_pass http://tomcat-test1;

  14. index index.html index.htm;

  15. }

  16. }

  17.  
  18. upstream tomcat-test2 {

  19. server 192.168.200.132:8081;

  20. }

  21. server {

  22. listen 80;

  23. server_name www.tomcat2.com;

  24.  
  25. #charset koi8-r;

  26.  
  27. #access_log logs/host.access.log main;

  28.  
  29. location / {

  30. proxy_pass http://tomcat-test2;

  31. index index.html index.htm;

  32. }

  33. }

(4)添加域名解析到hosts中。(C:\Windows\System32\drivers\etc,Windows环境下hosts所在目录)

(5)重新加载配置文件,启动tomcat,进行测试。

测试结果:

 

 

 

Nginx配置负载均衡

 

一、配置负载均衡就很简单了,只需要在nginx的配置文件中添加server节点即可。

 
  1. upstream tomcat-test2 {

  2. server 192.168.200.132:8081;

  3. server 192.168.200.132:8082;

  4. }

这样就完成了负载均衡,请求会循环分配。

扩展:如果需要对负载进行重新分配,比如8082这个服务器性能要更好,可以处理更多的请求,我们可以在后面加上权重。这样就可以使分配给8082端口所在服务器的请求更多。

 
  1. upstream tomcat-test2 {

  2. server 192.168.200.132:8081;

  3. server 192.168.200.132:8082 weight=2; //权重越大,分配到的请求越多

  4. }

 

 

 

--------------------- 作者:GodBbb 来源:优快云 原文:https://blog.youkuaiyun.com/qq1031893936/article/details/80299374?utm_source=copy 版权声明:本文为博主原创文章,转载请附上博文链接!

### 配置 Nginx 作为反向代理 #### 什么是反向代理 反向代理是一种服务器配置方式,其中 Nginx 接收客户端请求并将它们转发到后端服务器。最终由后端服务器处理请求并将结果返回给客户端[^4]。 #### 基本配置流程 为了使 Nginx 成功充当反向代理角色,需按照以下方式进行配置: 1. **安装 Nginx** 确保已正确安装 Nginx 并运行正常。如果没有安装,可通过包管理器完成安装操作。例如在 Ubuntu 上执行命令 `sudo apt-get install nginx` 安装软件[^5]。 2. **编辑 Nginx 配置文件** 打开主要的站点配置文件,默认位于 `/etc/nginx/sites-available/default` 或者自定义位置下的 `.conf` 文件中进行修改。 3. **添加反向代理规则** 假设目标是让所有发往域名 `www.example.com` 的流量被重定向至实际提供服务的地址 `http://localhost:8080` ,那么可以在对应 server block 下加入如下内容: ```nginx server { listen 80; server_name www.example.com; location / { proxy_pass http://localhost:8080; # 后端应用的真实URL 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-Proto $scheme; } } ``` 以上代码片段设置了基本的反向代理行为,并传递必要的头部信息以保留原始请求的相关属性[^1]。 4. **测试配置语法并重新加载 Nginx** 修改完成后保存退出,接着检验新配置是否存在错误: ```bash sudo nginx -t ``` 若无误,则刷新当前活动的服务实例使之生效: ```bash sudo systemctl reload nginx ``` #### 特殊情况考虑 - **HTTPS 支持**: 若要支持 SSL/TLS 加密通信,则需要额外引入证书材料并通过 ssl 模块启用加密通道。 - **WebSockets 处理**: 对于实时通讯协议 WebSocket (WSS),还需要特别指定升级握手相关的头字段[^3]: ```nginx location /ws/ { proxy_pass http://backend_ws_server; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } ``` #### 示例综合配置 这里给出一个较为全面的例子展示如何在一个典型的 LEMP(Linux, Nginx, MySQL/MariaDB, PHP) 架构之上叠加反向代理功能: ```nginx upstream php_backend { server unix:/run/php/php7.4-fpm.sock fail_timeout=0; } server { listen 80; server_name mysite.local; root /var/www/mysite; index index.php index.html; location /api/ { rewrite ^/api/(.*)$ /$1 break; proxy_pass http://jsonplaceholder.typicode.com/; proxy_set_header Host jsonplaceholder.typicode.com; } location / { try_files $uri $uri/ =404; } location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass php_backend; } } ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值