如何使用nginx设置反向代理?

我想获取我的docker集装箱的主机名称, 因为我只能使用反向代理 ,我试图在nginx的帮助下完成。

一个docker集装箱是一个web服务,将端口8080暴露给我的本地主机。

所以我可以通过以下方式访问Web服务器:

http://localhost:8080 

相反,我宁愿要使用:

 http://webservice.local 

因此,我添加到我的/etc/hosts

 127.0.0.1 webservice.local 

然后我安装了nginx并添加到/etc/nginx/sites-available/default

 server { listen 80 default_server; listen [::]:80 default_server ipv6only=on; root /usr/share/nginx/html; index index.html index.htm; # Make site accessible from http://localhost/ server_name localhost; location / { # First attempt to serve request as file, then # as directory, then fall back to displaying a 404. try_files $uri $uri/ =404; # Uncomment to enable naxsi on this location # include /etc/nginx/naxsi.rules } location webservice.local { proxy_pass http://localhost:8080 } 

重新加载nginx后,当我尝试在浏览器中打开http://webservice.local时,出现以下错误ERR_CONNECTION_REFUSED

我做错了什么? 我如何正确设置反向代理?

我不确定这是正确的语法。 尝试类似的东西:

 upstream myupstream { server 127.0.0.1:8080 fail_timeout=2s; keepalive 32; } location / { proxy_pass http://myupstream; proxy_redirect http://myupstream/ /; } 

沿着这些线路的东西..

但是,如果你只是想将8080端口redirect到80,为什么不使用像socat这样的networking工具?

然后,你应该在每个上游的nginx中添加虚拟主机,并将这些虚拟主机添加到DNS或/ etc / hosts中,这些都将parsing为本地主机。

或者你可以避免上游和使用虚拟主机,如下所示:

 server { listen 80; server_name myvirtualhost1.local; location / { proxy_pass http://127.0.0.1:8080; } server { listen 80; server_name myvirtualhost2.local; location / { proxy_pass http://127.0.0.1:9090; }