Nginx
Nginx connect() 連接到上游時失敗(111:連接被拒絕),客戶端:192.168.128.1,伺服器:hello-1.local
我正在嘗試在我的 django + docker + nginx 環境中設置 ssl。但是我遇到了這個錯誤:
*19 connect() 在連接到上游時失敗(111:連接被拒絕),客戶端:192.168.128.1,伺服器:hello-1.local,請求:“GET / HTTP/1.1”,上游:“https://192.168. 128.4:443/”,主機:“hello-1.local”
我的 Nginx 配置:
client_max_body_size 10M; upstream web { ip_hash; server web:443; } server { listen 80; server_name hello-1.local; return 301 https://$host$request_uri; } server { location /static/ { autoindex on; alias /src/static/; } location /media/ { autoindex on; alias /src/media/; } `` location / { proxy_pass https://web/; } listen 443 ssl; server_name hello-1.local; ssl_certificate /etc/certs/hello-1.local.crt; ssl_certificate_key /etc/certs/hello-1.local.key; }
碼頭工人-compose.yml:
version: "3" volumes: local_postgres_data: {} local_postgres_data_backups: {} services: nginx: image: nginx:alpine container_name: nz01 ports: - 443:443 - 80:80 volumes: - ./src:/src - ./config/nginx:/etc/nginx/conf.d - ./config/certs:/etc/certs depends_on: - web networks: - djangonetwork web: build: context: . dockerfile: compose/django/Dockerfile container_name: dz01 depends_on: - db volumes: - ./src:/src expose: - 8000 links: - redis env_file: - ./.envs/.django networks: - djangonetwork db: build: context: . dockerfile: compose/postgres/Dockerfile container_name: pz01 env_file: - ./.envs/.postgres volumes: - local_postgres_data:/var/lib/postgresql/data - local_postgres_data_backups:/backups networks: - djangonetwork redis: image: redis:alpine container_name: rz01 ports: - "6379:6379" networks: - djangonetwork networks: djangonetwork: driver: bridge
在瀏覽器中,我收到 502 Bad Gateway 錯誤,並且沒有 ssl,網站執行良好。可能是什麼問題呢?
那麼上游是什麼?
上游定義在這裡:
upstream web { ip_hash; server web:443; }
我的第一個閱讀是,Nginx 無法正確連接到名為
web
.這可能有多種原因:
- 你的 Nginx 無法解決
web
- 執行的網路伺服器
web
未提供 https/埠 443- 執行的網路伺服器
web
未使用有效且受信任的證書作為主機名web
看看你的 docker-compose.yml:
- 應用程序
web
暴露在 8000 埠,但你想連接到 Nginx 中的 443 埠,也使用了錯誤的協議(我猜)所以解決方案是像這樣在 nginx.conf 中改變你的上游配置:
upstream web { ip_hash; server web:8000; }
和這樣的位置塊(https –> http):
location / { proxy_pass http://web/; }
關於帶有代理/上游的 SSL/TLS:請查看 Nginx-docs: http: //nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_ssl_verify