nginx 端口转发¶
0 背景¶
最近将一些docker上暴露的端口重新规划一下, 准备直接使用域名去访问docker的服务. 于是使用了nginx用作内部的转发服务.
Nginx是一个开源的高性能、轻量级的HTTP和反向代理服务器,也可以用作电子邮件(IMAP/POP3)代理服务器。它是一个模块化的、事件驱动的架构,广泛用于构建可靠、高性能的Web服务器。Nginx的主要特点包括高并发、低内存消耗、高稳定性和可靠性,适用于处理大量的并发连接。
它广泛用于各个网站的部署上, 它的一些好处包括:
- 高性能: 能够处理大量并发连接,适合用于高流量的网站和应用程序。
- 低内存消耗: 占用内存小的很。
- 可扩展性: 支持丰富的插件和模块化架构,可以根据需要扩展其功能,满足不同场景的需求。
- 反向代理和负载均衡: Nginx可以作为反向代理服务器,将请求转发到后端的应用服务器,并且支持负载均衡,平衡多台服务器的负载,提高系统的稳定性和性能。
- 静态资源服务: Nginx能够快速地提供静态文件(如HTML、CSS、JavaScript、图片等)的访问,减轻动态内容生成的服务器负担。
- 高度可定制化: 可以根据实际的需求进行定制和优化,以满足特定的业务需求。
1 使用¶
在使用之前, 我们已经安装好了nginx, 如果没有安装, 使用下面这个命令安装. 我的系统是ubuntu
然后, 可以分别使用下面的命令, 查看 & 启动 & 停止 & 重启 nginx的系统服务
sudo systemctl status nginx
sudo systemctl start nginx
sudo systemctl stop nginx
sudo systemctl restart nginx
然后, 可以在/etc/nginx/conf.d或者/etc/nginx/sites-enabled文件下下面新建一个.conf文件, 写一个server, 内容如下:
server {
listen 80;
server_name doc.orange.com;
location / {
proxy_pass http://localhost:5000;
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;
}
}
这里直接新建conf文件的原因是, 在/etc/nginx/nginx.conf的默认配置文件里, 已经包含了两行代码:
以上配置的作用是监听80端口上来自doc.orange.com域名的流量, 转发到内部5000端口上, 我的服务器部署了一个docker服务, 因为将外部访问doc.orange.com时, 服务会转发我内部的docker容器内.
其中:
proxy_pass http://localhost:5000; 是 将请求转发到本地的5000端口.
proxy_set_header X-Real-IP $remote_addr; 是传递真实客户端的IP地址, 这个还挺重要的, 不然都不知道是谁访问的
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 是传递所有前置代理服务器的IP地址.
proxy_set_header X-Forwarded-Proto $scheme; 是传递访问协议(http或https).
最后, 重新启动nginx服务 systemctl restart nginx, 即可.
2 关于¶
欢迎关注我的公众号¶
