[英]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.