Nginx

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

  • October 7, 2015

我正在嘗試為我的 docker 容器獲取主機名,因為我只能為此使用反向代理,所以我試圖在 nginx 的幫助下完全實現這一點。

一個 docker 容器是一個 web 服務,它將埠 8080 暴露給我的本地主機。

所以我可以通過以下方式訪問網路伺服器:

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 後,嘗試在瀏覽器 ERR_CONNECTION_REFUSED中打開時出現以下錯誤。http://webservice.local

我做錯什麼了?如何正確設置反向代理?

我不確定這是正確的語法。嘗試這樣的事情:

upstream myupstream {
   server 127.0.0.1:8080 fail_timeout=2s;
   keepalive 32;
}

location / {
    proxy_pass http://myupstream;
    proxy_redirect http://myupstream/ /;
}

沿著這些路線的東西..

但是,如果您只想將埠 8080 重定向到 80,為什麼不使用 socat 之類的網路實用程序呢?

然後,您應該在 nginx 中為每個上游添加虛擬主機,並將這些虛擬主機添加到 DNS 或 /etc/hosts 中,它們都將解析為 localhost。

或者您可以避免上游並使用虛擬主機,如下所示:

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;
}

引用自:https://serverfault.com/questions/727314