尝试使用 SSL 为多个域设置反向代理时遇到“111:Unknown Error”

问题描述

我和一个朋友目前正在尝试为他的项目设置反向代理。 他有 3 个不同名称的域,我们将这些域附加到他的远程服务器上。

我们使用 Nginx 作为反向代理,并使用 3 个运行“Express”Web 服务器的 docker。 我们使用 certbot 生成 ssl 证书。

我已将 Nginx“custom-server”配置文件配置为尽我所能,并且所有域都在运行 ssl。

问题是在浏览器 (julian-kilner.com) 上查找时,只有其中一个显示某些内容。另外两个给我们错误“502 - Bad Gateway”。 检查error.log时,它给了我们错误“connect() Failed (111: UnkNown error) while connected to upstream”。

我用谷歌搜索无济于事,我们目前陷入困境......

我们尝试修改配置,更改语法,认为必须如此(因为一台服务器实际上在“工作”,而其他服务器则没有)。

我必须补充一点,在我们尝试 ssl 之前它工作得很好。

这里是反向代理配置文件

ssl_certificate /etc/letsencrypt/live/cyber-potato.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/cyber-potato.com/privkey.pem;

server {
        listen 80;
        listen 443 ssl;
        server_name cyber-potato.com;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
        access_log /var/log/Nginx/access.log;
        error_log /var/log/Nginx/error.log debug;

        location / {
                proxy_pass http://172.17.0.2:80;
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Forwarded-Proto $scheme;
        } }

server {
        listen 80;
        listen 443 ssl;
        server_name julian-kilner.com;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
        access_log /var/log/Nginx/access.log;
        error_log /var/log/Nginx/error.log;

        location / {
                proxy_pass http://172.17.0.3:80;
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Forwarded-Proto $scheme;
        } }

server {
        listen 80;
        listen 443 ssl;
        server_name rawcru.com;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
        access_log /var/log/Nginx/access.log;
        error_log /var/log/Nginx/error.log;

        location / {
                proxy_pass http://172.17.0.5:80;
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Forwarded-Proto $scheme;
        } }

这里是 Nginx 配置文件(我们实际上并没有改变太多):

user www-data;
worker_processes auto;
pid /run/Nginx.pid;
include /etc/Nginx/modules-enabled/*.conf;

events {
        worker_connections 768;
        # multi_accept on;
}

http {

        ##
        # Basic Settings
        ##

        sendfile on;
        tcp_nopush on;
        types_hash_max_size 2048;
        # server_tokens off;

        # server_names_hash_bucket_size 64;
        # server_name_in_redirect off;

        include /etc/Nginx/mime.types;
        default_type application/octet-stream;

        ##
        # SSL Settings
        ##

        ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; # Dropping SSLv3,ref: POODLE
        ssl_prefer_server_ciphers on;

        ##
        # Logging Settings
        ##

        access_log /var/log/Nginx/access.log;
        error_log /var/log/Nginx/error.log;

        ##
        # Gzip Settings
        ##

        gzip on;

        # gzip_vary on;
        # gzip_proxied any;
        # gzip_comp_level 6;
        # gzip_buffers 16 8k;
        # gzip_http_version 1.1;
        # gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+RSS text/javascript;

        ##
        # Virtual Host Configs
        ##

        include /etc/Nginx/conf.d/*.conf;
        include /etc/Nginx/sites-enabled/*;
        fastcgi_buffers 8 16k;
        fastcgi_buffer_size 32k;
        fastcgi_connect_timeout 300;
        fastcgi_send_timeout 300;
        fastcgi_read_timeout 300;
}

我们假设我们配置了一些不符合预期的方式...... 我会非常感谢任何愿意帮助我们的人。 谢谢

解决方法

好吧,事实证明我们有点愚蠢。 我们已将 docker 的侦听端口更改为 443,并在我们的配置中使用了“docker_ip”:80... 这显然行不通,但是嘿,我猜是第一次使用 nginx...