您当前的位置 :首页 > 学习资料 > 用Nginx做端口转发(反向代理)
投稿

用Nginx做端口转发(反向代理)

2021-03-21 20:41:59 来源: 作者: 责任编辑:cncml

有时我们会使用一些java或node应用,但又不想让他们直接监听80端口,这时就需要用到端口转发

本文中,我们介绍Nginx如何做端口转发,还有各种转发规则

将域名转发到本地端口
首先介绍最常用的,将域名转发到本地另一个端口上
  1. server{
  2.   listen 80;
  3.   server_name  tomcat.cncml.com;
  4.   index  index.php index.html index.htm;
  5.  
  6.   location / {
  7.     proxy_pass  http://127.0.0.1:8080; # 转发规则
  8.     proxy_set_header Host $proxy_host; # 修改转发请求头,让8080端口的应用可以受到真实的请求
  9.     proxy_set_header X-Real-IP $remote_addr;
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  11.   }
  12. }
复制代码
这样访问 http://tomcat.cncml.com 时就会转发到本地的 8080 端口

将域名转发到另一个域名
  1. server{
  2.   listen 80;
  3.   server_name  baidu.cncml.com;
  4.   index  index.php index.html index.htm;
  5.  
  6.   location / {
  7.     proxy_pass  http://www.baidu.com;
  8.     proxy_set_header Host $proxy_host;
  9.     proxy_set_header X-Real-IP $remote_addr;
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  11.   }
  12. }
复制代码
[size=0.6]这样访问 http://baidu.cncml.com 时就会转发到 http://www.baidu.com
本地一个端口转发到另一个端口或另一个域名
  1. server{
  2.   listen 80;
  3.   server_name 127.0.0.1; # 公网ip
  4.   index  index.php index.html index.htm;
  5.  
  6.   location / {
  7.     proxy_pass  http://127.0.0.1:8080; # 或 http://www.baidu.com
  8.     proxy_set_header Host $proxy_host;
  9.     proxy_set_header X-Real-IP $remote_addr;
  10.     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  11.   }
  12. }
复制代码
这样访问 http://127.0.0.1 时就会转发到本地的 8080 端口或 http://www.baidu.com

加 / 与不加 /
在配置proxy_pass代理转发时,如果后面的url加/,表示绝对根路径;如果没有/,表示相对路径

例如

加 /
  1. server_name cncml.com
  2. location /data/ {
  3. proxy_pass http://127.0.0.1/;
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/index.html

不加 /
  1. server_name cncml.com
  2. location /data/ {
  3. proxy_pass http://127.0.0.1;
  4. }
复制代码
访问 http://cncml.com/data/index.html 会转发到 http://127.0.0.1/data/index.html
 

本帖隐藏的内容

添加nginx网站 ”网站修改“ -》 “配置文件” 内添加下面代码



 
  1. upstream urlcncml {
  2.         #ip_hash;
  3.         #server 106.13.127.196:6006 weight=1;
  4.         server 106.13.127.196:6006;
  5.         server www.7llt.com;       
  6. }
  7. server
  8. {
  9.     listen 80;
  10.     server_name ns.com www.ns.com;
  11.     index index.php index.html index.htm default.php default.htm default.html;
  12.     root /www/wwwroot/nswww;
  13.    
  14.     #SSL-START SSL相关配置,请勿删除或修改下一行带注释的404规则
  15.     #error_page 404/404.html;
  16.     #SSL-END
  17.    
  18.     #ERROR-PAGE-START  错误页配置,可以注释、删除或修改
  19.     #error_page 404 /404.html;
  20.     #error_page 502 /502.html;
  21.     #ERROR-PAGE-END
  22.    
  23.     #PHP-INFO-START  PHP引用配置,可以注释或修改
  24.     include enable-php-73.conf;
  25.     #PHP-INFO-END
  26.    
  27.     #REWRITE-START URL重写规则引用,修改后将导致面板设置的伪静态规则失效
  28.     include /www/server/panel/vhost/rewrite/ns.com.conf;
  29.     #REWRITE-END
  30.    
  31.     #重定向页面地址
  32.     location /cncml.html{
  33.             if (!-e $request_filename){
  34.                     proxy_pass http://www.cncml.com;
  35.             }
  36.     }
  37.     location /index.asp{
  38.             proxy_pass http://www.llwe.cn;
  39.     }
  40.     location /41a1b70e{
  41.       #防止502以及Timeout的发生
  42.       proxy_connect_timeout 75;
  43.       proxy_read_timeout 300;
  44.       proxy_send_timeout 300;
  45.       proxy_buffer_size 64k;
  46.       proxy_buffers   4 64k;
  47.       proxy_busy_buffers_size 128k;
  48.       proxy_temp_file_write_size 128k;
  49.       
  50.             proxy_pass http://urlcncml;
  51.     }
  52.    
  53.     #禁止访问的文件或目录
  54.     location ~ ^/(\\.user.ini|\\.htaccess|\\.git|\\.svn|\\.project|LICENSE|README.md)
  55.     {
  56.         return 404;
  57.     }
  58.    
  59.     #一键申请SSL证书验证目录相关设置
  60.     location ~ \\.well-known{
  61.         allow all;
  62.     }
  63.    
  64.     location ~ .*\\.(gif|jpg|jpeg|png|bmp|swf)$
  65.     {
  66.         expires      30d;
  67.         error_log off;
  68.         access_log /dev/null;
  69.     }
  70.    
  71.     location ~ .*\\.(js|css)?$
  72.     {
  73.         expires      12h;
  74.         error_log off;
  75.         access_log /dev/null;
  76.     }
  77.     access_log  /www/wwwlogs/ns.com.log;
  78.     error_log  /www/wwwlogs/ns.com.error.log;
  79. }
复制代码

 
文章来源: 责任编辑:cncml
版权声明:
1、本主题所有言论和图片纯属会员个人意见,与本网站立场无关
2、本站所有主题由该文章作者发表,该文章作者与享有文章相关版权
3、其他单位或个人使用、转载或引用本文时必须同时征得该文章作者和的同意
4、文章作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任
5、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
6、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
7、管理员和版主有权不事先通知发贴者而删除本文
不良信息举报信箱 新闻热线:18733599993 技术服务:18733599993 网上投稿
关于本站 | 广告服务 | 免责申明 | 招聘信息 | 联系我们
在线网 版权所有 Copyright(C)2005-2025