nginx反向代理——将80端口请求转发到8080

本文介绍了nginx反向代理的概念,解释了如何通过nginx将80端口的请求转发到8080端口,以实现对外只开放80端口并隐藏内部服务的实际端口。通过配置nginx的转发规则,可以实现不同二级域名请求到不同的服务。此外,文中还提到在阿里云环境中测试关闭8080端口后,仅开放80端口仍然能正常服务的实践过程。

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

先来理解一波概念,什么是nginx反向代理?

反向代理的意思是以代理服务器(这里也就是nginx)来接收网络上的请求,也就是url(默认是80端口),

1,nginx通过对url里面的一些判断(转达规则配置在nginx配置文件中),比如端口号(nginx默认是80)有可能是对二级域名来判断

比如test1.baidu.com,test2.baidu.com,这就是两个二级域名,这里的一级域名也就是baidu.com,DNS会将这两个域名都解析到同一个ip(需要添加二级域名解析才行(阿里云需要在域名解析中添加解析即可,不同的域名,可解析到统一ip的服务器上),也可以分别解析到不同ip

2,nginx配置反向代理后可以将不同二级域名的请求转发到不同的可以提供相应服务的端口或者ip和端口

也就是说,你在浏览器分别输入test1.baidu.com

                        test2.baidu.com再回车,真实访问的端口(或ip,这取决于你nginx里面转发规则的配置)是不一样的,得到的服务也是不一样的 (这是在nginx得到配置文件中根据不同的域名或者请求路径来转发请求到不同的ip、端口上的项目);

 

 

还是上网截个图吧:client:就是客户端浏览器,可以使移动浏览器,也可以是pc浏览器

                           那团蓝色的云,就是网络

                            反向代理服务器:配置了nginx的服务器

                        web服务器,文件服务器  ---提供服务的tomcat,或者其他容器(部署了web项目的),这些服务器通常在同一个局域网中

 

说白了,就是外网都是访问同一个端口(80),通过nginx转发到内网提供不同服务的不同端口上

这样是不是说,端口只需要开放80,可以关闭8080了?

我去阿里云测试一下:

关闭8080后,

修改nginx的default.conf这个文件

 

 

wq保存修改后,从起nginx : service nginx restart

 

这样就是可以了

 

更正:

服务器只需要开放80端口,资源请求会先被nginx 去拦截,nginx 再转发请求到实际上能够请求的端口上去。

服务器暴露的只是80端口。

 

如果需要购买一个云服务器拿来玩玩,可以使用此链接(华为云服务器),有优惠哦。

https://activity.huaweicloud.com/discount_area_v5/index.html?fromacct=dbbd6b51-0269-4b94-9663-dde2ff072ed6&utm_source=V1g3MDY4NTY=&utm_medium=cps&utm_campaign=201905

### Nginx 反向代理 HTTPS 请求转发至 HTTP 的配置方法 为了实现通过 Nginx 将 HTTPS 请求转发到内部的 HTTP 资源,需要完成以下几个方面的设置: #### 1. 启用 SSL 支持并安装证书 在启用反向代理功能之前,需确保 Nginx 已编译支持 `--with-http_ssl_module` 参数[^2]。如果未开启此模块,则无法正常运行 HTTPS 功能。 ```bash ./configure --user=nginx --group=nginx --prefix=/usr/local/nginx --with-http_ssl_module ``` 接着,在服务器上部署有效的 SSL/TLS 证书文件(通常为 `.crt` 和 `.key` 文件)。这些文件可以通过购买商业证书或者使用免费服务(如 Let's Encrypt)获取。 #### 2. 修改站点配置文件 编辑对应的虚拟主机配置文件,添加如下内容来定义监听端口以及目标地址的跳逻辑[^3]: ```nginx server { listen 443 ssl; server_name yourdomain.com; # 加载SSL证书路径 ssl_certificate /path/to/your/certificate.crt; ssl_certificate_key /path/to/your/private.key; ssl_session_cache shared:SSL:1m; ssl_session_timeout 5m; ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; location / { proxy_pass http://backend_http_server_address/; 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-NginX-Proxy true; proxy_ssl_verify off; # 如果后端也是HTTPS则可能需要验证 } } ``` 在此部分中: - **listen**: 设置为 `443 ssl` 表明该服务器会接受加密连接。 - **ssl_certificate & ssl_certificate_key**: 提供公钥和私钥的位置以便建立安全链接。 - **location /**: 定义当访问根目录时应执行的操作——这里指定了将所有请求发送给指定的目标 URL (`http://backend_http_server_address`) 并传递必要的头部信息以保留原始客户端数据. #### 3. 测试与重启服务 保存更改后的配置文件之后,可以利用命令测试语法是否有误: ```bash /usr/local/nginx/sbin/nginx -t ``` 如果没有错误提示, 则可重新加载Nginx使新设定生效: ```bash killall -HUP nginx # 或者如果你知道确切pid的话也可以这样操作: # kill -HUP $(cat /var/run/nginx.pid) ``` 以上步骤完成后,按照描述正确设置了基于 NGINX 的 HTTPS 至 HTTP 的反向代理环境[^4]。 ---
评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值