Điểm:0

Nginx proxy ngược đang tải các trang web khác nhau khi làm mới

lá cờ fi

Tôi muốn lưu trữ nhiều trang web trong một máy chủ bằng proxy ngược nginx bằng cách làm theo hướng dẫn này https://www.datanovia.com/en/lessons/how-host-multiple-https-websites-on-one-server/

Proxy Nginx và mỗi trang web được khởi chạy riêng với Docker. Nhưng mỗi khi tôi tải lại một trong các trang web, nó sẽ tải nội dung của trang web khác. Ví dụ:

  • Tải trang webone.tk lần đầu tiên, tải nội dung của trang web ONE.

  • Làm mới websiteone.tk , tải nội dung của trang web HAI

  • Làm mới lại trang webone.tk, tải nội dung của trang web BA

  • Tải trang webtwo.tk lần đầu tiên, tải trang web HAI nội dung

  • Làm mới websitetwo.tk , đã tải BA nội dung trang web.

Tôi là người mới bắt đầu cho cả nginx và docker. Tôi không thể biết liệu sự cố xảy ra trong nginx hay docker.Có thể bất cứ ai xin vui lòng tư vấn? Cảm ơn rất nhiều.

Nginx-proxy default.conf là

bản đồ $http_x_forwarded_proto $proxy_x_forwarded_proto { mặc định $http_x_forwarded_proto;
  '' $sơ đồ;
}
bản đồ $http_x_forwarded_port $proxy_x_forwarded_port {
  $http_x_forwarded_port mặc định;
  '' $server_port;
}
bản đồ $http_upgrade $proxy_connection {
  nâng cấp mặc định;
  '' đóng lại;
}
server_names_hash_bucket_size 128;
bản đồ $proxy_x_forwarded_proto $proxy_x_forwarded_ssl {
  mặc định tắt;
  bật https;
}
văn bản gzip_types/văn bản thuần túy/ứng dụng css/ứng dụng javascript/ứng dụng json/văn bản x-javascript/ứng dụng xml/ứng dụng xml/xml+rss t>log_format vhost '$host $remote_addr - $remote_user [$time_local] '
                 '"$request" $status $body_bytes_sent '
                 '"$http_referer" "$http_user_agent" '
                 '"$upstream_addr"';
truy cập_đăng xuất;
                ssl_protocols TLSv1.2 TLSv1.3;
                ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA3> tắt ssl_prefer_server_ciphers;
error_log /dev/stderr;
# Hỗ trợ HTTP 1.1
proxy_http_version 1.1;
tắt proxy_buffering;
proxy_set_header Máy chủ $http_host;
proxy_set_header Nâng cấp $http_upgrade;
proxy_set_header Kết nối $proxy_connection;
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 $proxy_x_forwarded_proto;
proxy_set_header X-Forwarded-Ssl $proxy_x_forwarded_ssl;
proxy_set_header X-Forwarded-Port $proxy_x_forwarded_port;
proxy_set_header X-Original-URI $request_uri;
# Giảm thiểu cuộc tấn công httpoxy (xem README để biết chi tiết)
proxy_set_header Proxy "";
người phục vụ {
        tên máy chủ _; # Đây chỉ là một giá trị không hợp lệ sẽ không bao giờ kích hoạt trên tên máy chủ thực.
        server_tokens tắt;
        nghe 80;
        access_log /var/log/nginx/access.log vhost;
        trả lại 503;
}
người phục vụ {
        tên máy chủ _; # Đây chỉ là một giá trị không hợp lệ sẽ không bao giờ kích hoạt trên tên máy chủ thực.
        server_tokens tắt;
        nghe 443 ssl http2;
        access_log /var/log/nginx/access.log vhost;
        trả lại 503;
        ssl_session_cache được chia sẻ:SSL:50m;
        tắt ssl_session_tickets;
        ssl_certificate /etc/nginx/certs/default.crt;
        ssl_certificate_key /etc/nginx/certs/default.key;
}


#website.tk
thượng nguồn websiteone.tk {
## Có thể kết nối với mạng "nginx-proxy"
# websiteonetk_my-app_1
máy chủ 192.168.32.8:80;
}

người phục vụ {
        server_name websiteone.tk;
        nghe 80 ;
        access_log /var/log/nginx/access.log vhost;
        # Không chuyển hướng HTTPS Thử thách Let'sEncrypt ACME
        vị trí ^~ /.well-known/acme-challenge/ {
                auth_basic tắt;
                auth_request tắt;
                chấp nhận tất cả;
                gốc /usr/share/nginx/html;
                try_files $uri =404;
                nghỉ;
                      }
        địa điểm / {
                trả lại 301 https://$host$request_uri;
        }
}
người phục vụ {
        server_name websiteone.tk;
        nghe 443 ssl http2 ;
        access_log /var/log/nginx/access.log vhost;
        ssl_session_timeout 5 phút;
        ssl_session_cache được chia sẻ:SSL:50m;
        tắt ssl_session_tickets;
        ssl_certificate /etc/nginx/certs/websiteone.tk.crt;
        ssl_certificate_key /etc/nginx/certs/websiteone.tk.key;
        ssl_dhparam /etc/nginx/certs/websiteone.tk.dhparam.pem;
        ssl_bật ghim;
        ssl_stapling_verify bật;
        ssl_trusted_certificate /etc/nginx/certs/websiteone.tk.chain.pem;
        add_header Strict-Transport-Security "max-age=31536000" luôn luôn;
        bao gồm /etc/nginx/vhost.d/default;
        
        địa điểm / {
                        proxy_pass http://websiteone.tk;
        }
}


#trangwebhai.tk
trang web ngược dòngtwo.tk {
## Có thể kết nối với mạng "nginx-proxy"
# websitetwotk_my-app_1
máy chủ 192.168.32.13:80;
}

người phục vụ {
        server_name websitetwo.tk;
        nghe 80 ;
        access_log /var/log/nginx/access.log vhost;
        # Không chuyển hướng HTTPS Thử thách Let'sEncrypt ACME
        vị trí ^~ /.well-known/acme-challenge/ {
                auth_basic tắt;
                auth_request tắt;
                chấp nhận tất cả;
                gốc /usr/share/nginx/html;
                try_files $uri =404;
                nghỉ;
        }
        địa điểm / {
                trả lại 301 https://$host$request_uri;
        }
}
người phục vụ {
        server_name websitetwo.tk;
        nghe 443 ssl http2 ;
        access_log /var/log/nginx/access.log vhost;
        ssl_session_timeout 5 phút;
        ssl_session_cache được chia sẻ:SSL:50m;
        tắt ssl_session_tickets;
        ssl_certificate /etc/nginx/certs/websitetwo.tk.crt;
        ssl_certificate_key /etc/nginx/certs/websitetwo.tk.key;
        ssl_dhparam /etc/nginx/certs/websitetwo.tk.dhparam.pem;
        ssl_bật ghim;
        ssl_stapling_verify bật;
        ssl_trusted_certificate /etc/nginx/certs/websitetwo.tk.chain.pem;
        add_header Strict-Transport-Security "max-age=31536000" luôn luôn;
        bao gồm /etc/nginx/vhost.d/default;
        
        địa điểm / {
                        proxy_pass http://websitetwo.tk;
        }
}

#websiteba.tk
trang web ngược dòng three.tk {
## Có thể kết nối với mạng "nginx-proxy"
# websitebatk_my-app_1
máy chủ 192.168.32.3:80;
}
người phục vụ {
        server_name websiteba.tk;
        nghe 80 ;
        access_log /var/log/nginx/access.log vhost;
        # Không chuyển hướng HTTPS Thử thách Let'sEncrypt ACME
        vị trí ^~ /.well-known/acme-challenge/ {
                auth_basic tắt;
                auth_request tắt;
                chấp nhận tất cả;
                gốc /usr/share/nginx/html;
                try_files $uri =404;
                nghỉ;
        }
        địa điểm / {
                trả lại 301 https://$host$request_uri;
        }
}

người phục vụ {
        server_name websiteba.tk;
        nghe 443 ssl http2 ;
        access_log /var/log/nginx/access.log vhost;
        ssl_session_timeout 5 phút;
        ssl_session_cache được chia sẻ:SSL:50m;
        tắt ssl_session_tickets;
        ssl_certificate /etc/nginx/certs/websitethree.tk.crt;
        ssl_certificate_key /etc/nginx/certs/websitethree.tk.key;
        ssl_dhparam /etc/nginx/certs/websitethree.tk.dhparam.pem;
        ssl_bật ghim;
        ssl_stapling_verify bật;
        ssl_trusted_certificate /etc/nginx/certs/websitethree.tk.chain.pem;
        add_header Strict-Transport-Security "max-age=31536000" luôn luôn;
        bao gồm /etc/nginx/vhost.d/default;
        địa điểm / {
                        proxy_pass http://websitethree.tk;
        }
}

docker-compose cho proxy nginx là

phiên bản: '3.6'
dịch vụ:
  nginx:
    hình ảnh: nginx
    nhãn:
      com.github.jrcs.letsencrypt_nginx_proxy_companion.nginx_proxy: "true"
    container_name: nginx
    khởi động lại: trừ khi dừng
    cổng:
      - "80:80"
      - "443:443"
    khối lượng:
      - ./conf.d:/etc/nginx/conf.d
      - ./vhost.d:/etc/nginx/vhost.d
      - ./html:/usr/share/nginx/html
      - ./certs:/etc/nginx/certs:ro

  nginx-gen:
    hình ảnh: jwilder/docker-gen
    lệnh: -notify-sighup nginx -watch -wait 5s:30s /etc/docker-gen/templates/nginx.tmpl /etc/nginx/conf.d/default.conf
    container_name: nginx-gen
    khởi động lại: trừ khi dừng
    khối lượng:
      - ./conf.d:/etc/nginx/conf.d
      - ./vhost.d:/etc/nginx/vhost.d
      - ./html:/usr/share/nginx/html
      - ./certs:/etc/nginx/certs:ro
      - /var/run/docker.sock:/tmp/docker.sock:ro
      - ./nginx.tmpl:/etc/docker-gen/templates/nginx.tmpl:ro

  nginx-letsencrypt:
    hình ảnh: jrcs/letsencrypt-nginx-proxy-đồng hành
    container_name: nginx-letsencrypt
    khởi động lại: trừ khi dừng
    khối lượng:
      - ./conf.d:/etc/nginx/conf.d
      - ./vhost.d:/etc/nginx/vhost.d
      - ./html:/usr/share/nginx/html
      - ./certs:/etc/nginx/certs:rw
      - /var/run/docker.sock:/var/run/docker.sock:ro
    môi trường:
      NGINX_DOCKER_GEN_CONTAINER: "nginx-gen"
      NGINX_PROXY_CONTAINER: "nginx"
mạng:
  mặc định:
    bên ngoài:
      tên: nginx-proxy

Nginx default.conf cho một trong các trang web là

người phục vụ {
    gốc/ứng dụng2;
    chỉ số index.php;

    vị trí ~ \.php$ {
        fastcgi_pass php-fpm:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PHP_VALUE "error_log=/var/log/nginx/application_php_errors.log";
        fastcgi_buffers 16 16k;
        fastcgi_buffer_size 32k;
        bao gồm fastcgi_params;
    }
}

Docker-compose/yml cho một trong các trang web bên dưới.

Thư mục làm việc của trang web là /application1. Websitehai thư mục làm việc là /application2. vân vân

phiên bản: '3.1'
dịch vụ:
    ứng dụng của tôi:
        hình ảnh: 'nginx:alpine'
        khối lượng:
            - '.:/application2'
            - './phpdocker/nginx/nginx.conf:/etc/nginx/conf.d/default.conf'
        khởi động lại: luôn luôn
        môi trường:
            - VIRTUAL_HOST=websitehai.tk
            - ẢO_PORT=80
            - LETSENCRYPT_HOST=websitetwo.tk
        lộ ra:
            - 80
    con thư:
        hình ảnh: 'mailhog/mailhog:latest'
        cổng:
            - '21001:8025'

    php-fpm:
        xây dựng: phpdocker/php-fpm
        working_dir: /application2
        khối lượng:
            - '.:/application2'
            - './phpdocker/php-fpm/php-ini-overrides.ini:/etc/php/8.1/fpm/conf.d/99-overrides.ini'
mạng:
    mặc định:
        bên ngoài:
            tên: nginx-proxy

Điểm:1
lá cờ fi

Tôi đã tự mình tìm ra câu trả lời. Trong trường hợp ai đó gặp tình huống tương tự: Đối với docker-compose.yml của mỗi trang web, một mạng độc lập phải thiết lập .

Đầu tiên tôi đổi tên mạng nginx-proxy từ "default" thành "proxy" Sau đó, đối với mỗi trang web, hãy sử dụng một mạng độc lập (tôi gọi nó là "ứng dụng") để liên kết từng dịch vụ được sử dụng trong vùng chứa. Dịch vụ nginx cũng cần sử dụng mạng proxy.

trang web docker-compose.yml:

phiên bản: '3.1'
dịch vụ:
    ứng dụng của tôi:
        mạng: 
            - ứng dụng
            - Ủy quyền
        hình ảnh: 'nginx:alpine'
        khối lượng:
            - '.:/application2'
            - './phpdocker/nginx/nginx.conf:/etc/nginx/conf.d/default.conf'
        khởi động lại: luôn luôn
        môi trường:
            - VIRTUAL_HOST=websitehai.tk
            - ẢO_PORT=80
            - LETSENCRYPT_HOST=websitetwo.tk
        lộ ra:
            - 80
    con thư:
        mạng: 
            - ứng dụng
        hình ảnh: 'mailhog/mailhog:latest'
        cổng:
            - '21001:8025'

    php-fpm:
        mạng: 
            - ứng dụng
        xây dựng: phpdocker/php-fpm
        working_dir: /application2
        khối lượng:
            - '.:/application2'
            - './phpdocker/php-fpm/php-ini-overrides.ini:/etc/php/8.1/fpm/conf.d/99-overrides.ini'
mạng:
    Ủy quyền:
        bên ngoài:
            tên: nginx-proxy
    ứng dụng:

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.