Apache-2.2

nginx反向代理到docker容器的502錯誤程式碼

  • July 11, 2017

我已經使用以下腳本執行了一個帶有 nextcloud 映像的 docker 容器(來自這裡https://hub.docker.com/_/nextcloud/):

docker run \
--rm \
--detach \
--publish 54002:80 \
--name cloud.example.com \
--volume /srv/cloud.example.com/:/var/www/html \
nextcloud

我用 nginx 做了一個反向代理:

server {
       listen *:80;
       server_name cloud.example.com;
       proxy_set_header Host cloud.example.com;
       location / {
       rewrite ^(.*)$ https://cloud.example.com$1 permanent;
       }
}

server {
       listen *:443 ssl http2;
       server_name     cloud.example.com;
       proxy_set_header Host cloud.example.com;
       set $service_port 54002;
       set $service_ip 192.168.2.33;
       ssl_certificate         /etc/letsencrypt/live/cloud.example.com/fullchain.pem;
       ssl_certificate_key             /etc/letsencrypt/live/cloud.example.com/privkey.pem;

       add_header Strict-Transport-Security "max-age=15552000; includeSubDomains" always;
       add_header X-Content-Type-Options nosniff;
       add_header X-Frame-Options "SAMEORIGIN";
       add_header X-XSS-Protection "1; mode=block";
       add_header X-Robots-Tag none;
       add_header X-Download-Options noopen;
       add_header X-Permitted-Cross-Domain-Policies none;

       location / {
               proxy_pass http://$service_ip:$service_port;
       }
}

我得到 502 錯誤程式碼。我已經從本地網路http://server_ip:54002檢查,它工作正常,也只有帶有代理的 http 站點也可以工作!有效的 Http Nginx 配置:

server {
       set $service_port 54002;
       set $service_ip 192.168.2.33;
       set $domain_name cloud.example.com;

       listen *:80;
       server_name $domain_name;

       proxy_set_header Host $domain_name;

       location / {
               proxy_pass http://$service_ip:$service_port;
       }
}

我的 https 配置有什麼問題?

在為這個問題掙扎了很多小時後,我終於在我的伺服器配置中發現了一個錯誤。使用 nginx 一切都很好,但我忘了在 ufw 中允許 443 埠。我錯誤地認為規則“Nginx HTTP”對於 http 和 https 連接都足夠了,但實際上只有 80/tcp 埠是開放的,所以我輸入 ufw allow 443/tcp了所有錯誤都消失了!@alexus 和其他人請原諒我浪費你的時間!

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