簡體   English   中英

如何在docker中設置正確的Nginx反向代理配置

[英]How to set the right Nginx reverse proxy configuration in docker

我在 docker 中部署了 Nginx 反向代理,它屬於使用172.16.10.0/24的橋接網絡。 我在 docker 中有另一個 web 應用程序,它位於不同的橋接網絡172.16.20.0/24中。 為了讓 Niginx 反向代理連接 web 應用程序,我設置了 Nginx 反向代理加入172.16.20.0/24為好。

我的 web 應用托管在 http://localhost:8899 中,並且我綁定了 host:8899 --> container:80。 我想嘗試的是:當有人訪問 https://mydomain 時,反向代理應該傳遞給 http://localhost:8899。

我的 nginx 配置如下:

server {
    listen 80;
    listen [::]:80;
    server_name mydomain;
    return 301 https://$host$request_uri;
}


server {
    listen 443 ssl;
    listen [::]:443 ssl;
    server_name mydomain;

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

    ssl_certificate /ssl/my_domain_cert.pem;
    ssl_certificate_key /ssl/my_domain.key;

    location / {
        proxy_set_header Host $host;
        proxy_set_header Cookie $http_cookie;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-Host $host;
        proxy_pass http://localhost:8899;
        proxy_read_timeout 90;
    }
}

但是,當我連接到 https://mydomain 時,錯誤是 SSL 握手失敗(錯誤代碼 525)。 我應該如何解決這個問題?

525 HTTP 錯誤表示,沒有安裝有效的 SSL 證書。

nginx conf 正在以下位置搜索 SSL 證書文件:

ssl_certificate /ssl/my_domain_cert.pem;
ssl_certificate_key /ssl/my_domain.key;

除非您在 Dockerfile 中創建了 SSL 證書或之前創建了一個並將它們放在這些位置,否則您必須手動創建 SSL 證書。

如何創建密鑰和 pem 文件:
https://www.digitalocean.com/community/tutorials/how-to-create-a-self-signed-ssl-certificate-for-nginx-on-centos-7
如何從.key 和.crt 文件中獲取.pem 文件?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM