nginx可以转发http以及socket端口。该功能在使用docker进行开发测试时是非常有用的。
我们在使用docker时如果启动的时候忘记做端口映射,那么就可以通过配置nginx端口转发的方式实现。
使用nginx转发http端口
文件配置,修改/etc/nginx/nginx.conf
在http配置项中添加server子项,例如:
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
client_max_body_size 500m;
include /etc/nginx/conf.d/*.conf;
server{
listen 28181;
server_name 192.168.1.4; # 公网ip
index index.php index.html index.htm;
location / {
proxy_pass http://172.17.0.8: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://172.17.0.8:8080转发到http://192.168.1.4:28181上
使用nginx转发socket端口
同样修改文件配置,修改/etc/nginx/nginx.conf,
在http同级配置项下新增stream配置,具体如下所示:
stream{
upstream socket_server{
server 172.17.0.8:5005 weight=1;#发布socket1服务端口
}
#监听socket端口
server {
listen 15005;
proxy_pass socket_server;
}
}
上述配置表示将172.17.0.5:5005的socket端口转发到本机的15005端口。
总结
基于上述nginx的功能特性,我们可以使用nginx动态转发docker容器中的任意端口,对于我们开发或测试来说是非常方便的!
本文为从大数据到人工智能博主「xiaozhch5」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://lrting.top/backend/linux/2434/