nginx端口转发(80端口到tomcat的8080端口)具体步骤以及配置

本文介绍如何通过Nginx实现不同端口间的转发,包括80端口到8080端口的转发、域名到本地端口的转发等,并详细说明了配置过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.为什么要转发

  1. 80端口是为HTTP(HyperText Transport Protocol)即超文本传输协议开放的,此为上网冲浪使用次数 最多的协议,主要用于WWW传输信息的协议。可以通过HTTP地址(即常说的“网址”)加“:80”来访问网站,因为浏览网页服务默认的端口号都是80,因此只要输入网址即可,不需要输入端口号来进行访问。
  2. 8080端口为tomcat服务器默认配置端口,所以我想直接访问网址而不加端口来访问我tomcat下部署的项目时,必须进行端口转发。(即要达到这样一个效果:直接访问www.baidu.com访问的是8080端口,而不是其80端口)

二.nginx将80端口转发到8080的具体步骤

在nginx的conf/nginx.conf配置


    #gzip  on;
    upstream webserver{
        server ***.**.**.**:8080; #腾讯云外网地址+tomcat的8080端口
 }

    #nginx监听http请求,即80端口,nginx内部将其转发到8080端口,代理的是服务器,所以是反向代理
    server {
        listen       80;
        server_name  www.*****.cn; #域名信息,即你的域名解析到的主机地址

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

   
        location / {
            root   html;
            index  index.html index.htm;
            proxy_pass http://webserver;      #代理指向上边upstream配置的变量
        }

三. nginx各种类型的端口转发

  1. 将域名转发到本地端口
server{
  listen 80;
  server_name  tomcat.baidu.com;
  index  index.php index.html index.htm;

  location / {
    proxy_pass  http://127.0.0.1:8080; # 转发规则
    proxy_set_header Host $proxy_host; # 修改转发请求头,让8080端口的应用可以受到真实的请求
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  }
}

这样访问 http://tomcat.baidu.com 时就会转发到本地的 8080 端口

  1. 将域名转发到另一个域名
server{
  listen 80;
  server_name  baidu.wode.com;
  index  index.php index.html index.htm;

  location / {
    proxy_pass  http://www.baidu.com;
    proxy_set_header Host $proxy_host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  }
}

这样访问 http://baidu.wode.com 时就会转发到 http://www.baidu.com

  1. 本地一个端口转发到另一个端口或另一个域名
server{
  listen 80;
  server_name 127.0.0.1; # 公网ip
  index  index.php index.html index.htm;

  location / {
    proxy_pass  http://127.0.0.1:8080; # 或 http://www.baidu.com
    proxy_set_header Host $proxy_host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  }
}

这样访问 http://127.0.0.1 时就会转发到本地的 8080 端口或 http://www.baidu.com

为了实现80端口请求到8080端口Tomcat服务器的反向代理,并在URL中包含项目名,我们需要在Nginx配置文件中设置正确的location块和proxy_pass指令。具体步骤如下: 参考资源链接:[Nginx配置80端口访问8080端口及项目名路径详解](https://wenku.csdn.net/doc/6412b75dbe7fbd1778d4a08a?spm=1055.2569.3001.10343) 1. 打开Nginx配置文件(通常位于/etc/nginx/nginx.conf或/usr/local/nginx/conf/nginx.conf),并找到或创建一个server块,这个块监听80端口。 2. 在server块中,设置一个location块来匹配你的项目路径。例如,如果你的项目名为`myapp`,则配置如下: ``` location /myapp/ { proxy_pass *** *** $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; } ``` 在这里,`proxy_pass`指令中的URL指明了请求应该被转发到的后端服务器地址和端口。注意,这里使用了`localhost:8080`,这表明后端服务器运行在本机的8080端口上。`/myapp/`路径确保了请求被正确地发送到Tomcat的项目目录。 3. 配置文件中的其他参数如`proxy_set_header`用于修改传递给后端服务器的HTTP头部信息,确保后端服务器能够接收到正确的客户端IP和协议信息。 4. 完成配置后,需要测试Nginx配置文件是否正确无误,运行命令`nginx -t`。如果没有错误,重新加载Nginx服务以应用新的配置,使用命令`systemctl reload nginx`(或使用其他相应的命令,取决于你的操作系统)。 通过以上步骤,你的Nginx服务器将能够监听80端口,接受来自用户的访问请求,并将这些请求透明地转发Tomcat服务器的8080端口上运行的特定项目中,同时URL中会包含项目名路径,用户无需知道后端的具体端口信息。 更多详细信息和高级配置选项,建议查阅《Nginx配置80端口访问8080端口及项目名路径详解》,该资料将为你提供更多的配置案例和深入解析,帮助你更好地理解并运用Nginx作为反向代理服务器的高级用法。 参考资源链接:[Nginx配置80端口访问8080端口及项目名路径详解](https://wenku.csdn.net/doc/6412b75dbe7fbd1778d4a08a?spm=1055.2569.3001.10343)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值