欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

CentOS利用nginx设置80、443端口转发(Port forwarding)

程序员文章站 2022-05-27 23:44:11
...

操作环境:

CentOS7、nginx1.11.6、tomcat

问题描述:

项目基于tomcat开放的8088端口,为避免访问时输入8088端口号的麻烦,需要将直接通过域名(80、443端口)的访问转发至8088端口。

解决途径:

利用nginx的端口转发功能,将对80、443端口的访问转发至8088端口。

需要改动nginx配置文件nginx.conf中的server段。

下面以80端口转发8088为例,443端口以此类推,location段内为转发功能的实现。

server {
    listen 80;
    server_name www.xxx.com; # 多个域名可用空格隔开

    location / {
        proxy_pass http://127.0.0.1:8088; # 转发至8088端口,关键部分
        
        # 相关配置,可省略
        proxy_read_timeout 600s;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Host $host:$server_port; # 配置后不会丢失端口
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

小结:

我在实现端口转发时碰到了转发失败的情况,原因是443端口未打开,而每次通过域名访问都会自动以https的方式访问,导致一直转发失败,在小问题上浪费了不少时间,因此总结了一些查错的步骤以供再次碰到时参考。

1.服务器

(1)服务器是否正常工作

(2)监听的端口(如80、443)及转发的端口(如8088)是否全部打开

(3)防火墙开启与否,开启则相应端口是否在白名单

2.域名

(1)域名是否备案(否则80端口将被屏蔽)、到期

3.软件

(1)项目及软件是否配置正确(即域名+端口号是否能访问想要转发的项目,能访问则配置正确)

(2)相应端口号是否已被占用or冲突

(3)nginx权限是否够(nginx.conf中user句,后面可尝试先改为root,看是否能访问,能访问则后续创建所需要的权限的新用户,最好不要一直设为root)