【发布时间】:2019-12-26 23:53:00
【问题描述】:
domain.conf 看起来像这样
我是使用 Nginx 传递 Django API 服务器的代理。 Nginx 使用letsencrypt SSL 证书,目前正在监听端口80 和443。Nginx 完美地服务于react 构建文件,同时在react app 中使用Axios 访问Django API 会导致502 bad gateway。 Axios 正在尝试以 baseURL 的形式访问“/api/v1/”。
server {
listen 80;
listen [::]:80;
location /.well-known/acme-challenge/ {
root /var/www/certbot;
}
return 301 https://example.com$request_uri;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
# redirects www to non-www. wasn't work for me without this server block
return 301 https://example.com$request_uri;
}
server {
listen 443 ssl;
listen [::]:443 ssl;
server_name example.com www.example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
location / {
root /var/www/frontend;
try_files $uri $uri/ /index.html;
}
location /api/ {
proxy_pass http://localhost:8000;
proxy_redirect default;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
docker-compose.yml 的一部分看起来像这样
backend:
build:
context: .
dockerfile: dockerFiles/backend/DockerFile
tty: true
ports:
- "8000:8000"
expose:
- 8000
volumes:
- ./backend:/backend
env_file:
- backend/.env
depends_on:
- db
frontend:
image: node:latest
command: sh start.sh
working_dir: /frontend
tty: true
volumes:
- ./frontend/:/frontend
depends_on:
- backend
links:
- backend
nginx:
image: nginx:latest
tty: true
ports:
- 80:80
- 443:443
volumes:
- ./config/nginx/conf.d:/etc/nginx/conf.d
- ./frontend/dist:/var/www/frontend
- ./data/certbot/conf:/etc/letsencrypt
- ./data/certbot/www:/var/www/certbot
depends_on:
- backend
- start.sh 运行yarn yarn build
- domain.conf 复制自./config/nginx/conf.d
【问题讨论】:
-
你有多个服务器监听同一个端口,要么他们应该有不同的域,要么他们应该有不同的端口。您需要在 nginx 中为 uwsgi 和静态文件创建不同的端点
-
@deathangel908 任何参考都会很好。谢谢。
标签: python django nginx docker-compose nginx-reverse-proxy