我的服务器http://127.0.0.1:5438/api提供了api。
如果我不使用docker,nginx配置可以正常工作。
server {
listen 80;
server_name 127.0.0.1;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
try_files $uri $uri/ /index.html;
}
location ^~/api/ { proxy_pass http://127.0.0.1:5438/api/; }
}
如果我使用的是docker,则nginx配置不起作用。
sudo docker run \
-d -p 80:80 \
-v /usr/share/nginx/html:/usr/share/nginx/html \
-v /etc/nginx/nginx.conf:/etc/nginx/nginx.conf:ro \
-v /usr/share/nginx/html/nginx.conf:/etc/nginx/sites-enabled/nginx.conf \
nginx
那么如何在docker nginx中访问主机的5438端口呢?
答案 0 :(得分:0)
如果您不在意网络拓扑,请尝试添加--net=host
,但限制是主机不应具有服务使用的80
端口。
sudo docker run \
--net=host \
-d \
-v /usr/share/nginx/html:/usr/share/nginx/html \
-v /etc/nginx/nginx.conf:/etc/nginx/nginx.conf:ro \
-v /usr/share/nginx/html/nginx.conf:/etc/nginx/sites-enabled/nginx.conf \
nginx
答案 1 :(得分:-2)
在docker run命令中将“ -p 80:80”修改为“ -p 5438:80”,这会将Docker的80端口连接到主机的5438端口。
sudo docker run \
-d -p 5438:80 \
-v /usr/share/nginx/html:/usr/share/nginx/html \
-v /etc/nginx/nginx.conf:/etc/nginx/nginx.conf:ro \
-v /usr/share/nginx/html/nginx.conf:/etc/nginx/sites-enabled/nginx.conf \
nginx
希望它能正常工作!