![](/img/trans.png)
[英]Implementation of Nginx Container for Reverse Proxying and SSL certificates for Django Containers inside Docker Swarm
[英]Django container is rejecting nginx containers traffic
我有一个非常简单的设置,一个 pod 中的单个 django 容器和另一个 pod 中的 nginx 容器。 我使用 nginx 是因为我想将 django 应用程序投入生产,并且我需要一个像 nginx 这样的实际 Web 服务器来在网站上放置一个 ssl 证书。
问题是 django 似乎拒绝了来自 nginx 容器的所有流量,因为 Web 浏览器在浏览到 localhost 时出现 502 bad gateway 错误并且 nginx 日志显示:
*3 recv() failed (104: Connection reset by peer) while reading response header from upstream
我已经在 django 设置中添加了 127.0.0.1 和 localhost 到允许的主机。
下面是我通过配置映射加载的带有 nginx 配置的 kubernetes 文件。 我已经尝试了大约 30 种不同的 nginx.conf 配置,这只是最新和最简单的一种。
apiVersion: v1
kind: Service
metadata:
name: my-nginx-svc
labels:
app: nginx
spec:
type: LoadBalancer
ports:
- port: 80
selector:
app: nginx
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-nginx
labels:
app: nginx
spec:
replicas: 1
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80
volumeMounts:
- name: test-vol
mountPath: /etc/nginx/conf.d
readOnly: True
volumes:
- name: test-vol
configMap:
name: nginx-conf
---
apiVersion: v1
kind: ConfigMap
metadata:
name: nginx-conf
labels:
app: config
data:
nginx.conf: |
server {
server_name my-django-svc;
listen 80;
location / {
proxy_pass http://my-django-svc:8000;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
}
}
---
apiVersion: v1
kind: Service
metadata:
name: my-django-svc
labels:
app: web
spec:
type: LoadBalancer
ports:
- port: 8000
selector:
app: backend
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: backend
spec:
selector:
matchLabels:
app: web
tier: backend
track: stable
replicas: 1
template:
metadata:
labels:
app: web
tier: backend
track: stable
spec:
containers:
- name: web
image: localhost:5000/kubernetes/web
ports:
- name: http
containerPort: 8000
imagePullPolicy: Always
我不知道如何进一步缩小这个问题。 我看到其他一些人在他们的 django 容器上使用 wsgi,但我不确定它是否有必要或有什么好处。
我已经将 127.0.0.1 和 localhost 添加到允许的主机中
这不是此设置的正确配置,因为连接不是使用127.0.0.1
建立的——它是使用 NGINX 中配置的主机名建立的,例如my-django-svc
,因此您必须将其添加到 allowed_hosts 设置。
ALLOWED_HOSTS = ['my-django-svc']
您正在尝试使用my-django-svc
域访问此 nginx 应用程序,如果没有,请在nginx.conf
中像server_name example.com
一样具体。 如果您不确定是否将server_name
放在nginx.conf
文件中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.