nginx 端口转发
0 背景
最近将一些docker上暴露的端口重新规划一下, 准备直接使用域名去访问docker的服务. 于是使用了nginx用作内部的转发服务.
Nginx是一个开源的高性能、轻量级的HTTP和反向代理服务器,也可以用作电子邮件(IMAP/POP3)代理服务器。它是一个模块化的、事件驱动的架构,广泛用于构建可靠、高性能的Web服务器。Nginx的主要特点包括高并发、低内存消耗、高稳定性和可靠性,适用于处理大量的并发连接。
它广泛用于各个网站的部署上, 它的一些好处包括:
-
高性能: 能够处理大量并发连接,适合用于高流量的网站和应用程序。 -
低内存消耗: 占用内存小的很。 -
可扩展性: 支持丰富的插件和模块化架构,可以根据需要扩展其功能,满足不同场景的需求。 -
反向代理和负载均衡: Nginx可以作为反向代理服务器,将请求转发到后端的应用服务器,并且支持负载均衡,平衡多台服务器的负载,提高系统的稳定性和性能。 -
静态资源服务: Nginx能够快速地提供静态文件(如HTML、CSS、JavaScript、图片等)的访问,减轻动态内容生成的服务器负担。 -
高度可定制化: 可以根据实际的需求进行定制和优化,以满足特定的业务需求。
1 使用
在使用之前, 我们已经安装好了nginx, 如果没有安装, 使用下面这个命令安装. 我的系统是ubuntu
sudo apt update
sudo apt install nginx
然后, 可以分别使用下面的命令, 查看 & 启动 & 停止 & 重启 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
的默认配置文件里, 已经包含了两行代码:
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
以上配置的作用是监听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 关于
欢迎关注我的公众号
原文始发于微信公众号(其之):nginx 端口转发
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/204927.html