老师能不能讲下docker中的nginx如何反向代理websocket。
来源:4-2 配置文件main段核心参数用法-下

倔强的二文鱼
2020-09-12
docker-compose 文件是这样的。websocket服务运行在web 中的8001端口,如何被nginx识别并反代。
version: "2"
volumes:
local_postgres_data: {}
local_postgres_data_backups: {}
services:
nginx:
image: nginx:alpine
container_name: nz01
ports:
- "8000:8000"
volumes:
- ./src:/src
- ./config/nginx:/etc/nginx/conf.d
depends_on:
- web
networks:
- djangonetwork
web:
image: dockerdjango_web
container_name: dz01
ports:
- 8000
- 8807:8807
- 8001:8001
- 8002:8002
- 5678:5678
depends_on:
- db
volumes:
- ./src:/src
- ./note:/note
- ./jupyter:/root/.jupyter
expose:
- "8000"
links:
- redis
env_file:
- ./.envs/.django
networks:
- djangonetwork
db:
image: dockerdjango_db
container_name: pz01
env_file:
- ./.envs/.postgres
ports:
- "5432:5432"
volumes:
- local_postgres_data:/var/lib/postgresql/data
- local_postgres_data_backups:/backups
- ./dback:/dback
networks:
- djangonetwork
redis:
image: redis:alpine
container_name: rz01
ports:
- "6379:6379"
networks:
- djangonetwork
networks:
djangonetwork:
driver: bridge
nginx的配置是
client_max_body_size 1000M;
fastcgi_intercept_errors on;
proxy_intercept_errors on;
proxy_ignore_client_abort on;
upstream web {
ip_hash;
server web:8000;
}
upstream channels-backend {
server web:8001;
}
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
server {
# error_page 403 /error/403;
# error_page 404 /error/404;
# error_page 500 503 502 /error/500;
# location /error {
# autoindex on;
# alias /src/error/;
# }
error_page 405 =200 $uri;
location /static {
autoindex off;
alias /src/static/;
}
location /media {
autoindex off;
alias /src/media/;
}
location /home {
autoindex off;
alias /src/home/;
}
location /plugin {
autoindex off;
alias /src/plugin/;
}
location /observer {
proxy_pass http://dz01:8001;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 3600s;
}
location /jupyter {
proxy_pass http://dz01:8807/jupyter;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_connect_timeout 30s;
proxy_read_timeout 86400s;
proxy_send_timeout 30s;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
expires 12h;
}
location / {
proxy_pass http://web/;
# proxy_redirect off;
# proxy_set_header Host $http_host;
# proxy_set_header X-Real-IP $remote_addr;
# proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
listen 8000;
server_name localhost;
}
写回答
1回答
-
酷田
2020-11-13
您好,课程中没有针对websocket代理做讲解,但配置也不复杂,可以参考这个:https://www.cnblogs.com/kevingrace/p/9512287.html
websocker的原理以及配置在里面都有讲解,可以看看
还有上述你得配置执行有报错吗?最好报错的话把日志贴出来,这样便于进一步分析哈
10
相似问题