如何解决如何在Docker上的Nginx反向代理中重定向多个应用程序?
我正在docker上与两个React.js应用程序一起运行nginx反向代理。我想这样做,只需添加/ app1或/ app2即可通过同一端口访问两个应用程序。当我只有http时,它可以工作,但是现在我添加了ssl,它不起作用。
这是我的default.conf
server {
listen 80;
listen [::]:80;
server_name xxx.xxx.xxx.xx;
if ($scheme = http) {
return 301 https://$server_name$request_uri;
}
}
server {
listen 443 ssl; # 'ssl' parameter tells NGINX to decrypt the traffic
server_name xxx.xxx.xxx.xx;
ssl on;
ssl_certificate xxx.xxx.xxx.xx.pem;
ssl_certificate_key xxx.xxx.xxx.xx-key.pem;
ssi on;
proxy_intercept_errors on;
location /app1 {
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 X-Forwarded-Proto $scheme;
proxy_pass http://app1:5000;
# WebSocket support
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
location /app2 {
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 X-Forwarded-Proto $scheme;
proxy_pass http://app2:5000;
# WebSocket support
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
这是我的docker-compose.yml
version: "3.1"
services:
app1:
stdin_open: true
build: app1/app1
networks:
- local-network
environment:
- NODE_ENV=production
- PORT=5000
app2:
stdin_open: true
build: app2/app2
networks:
- local-network
environment:
- NODE_ENV=production
- PORT=5000
micro-frontend-nginx:
container_name: micro-frontend-nginx
build: nginx
volumes:
- ./assets:/var/www
ports:
- "8080:80"
- "443:443"
networks:
- local-network
depends_on:
- app1
- app2
networks:
local-network:
这些是我指定任何端口的文件。您能告诉我为什么它无法正确重定向应用程序吗?
更新:
错误日志:
2020/10/30 12:40:30 [错误] 7#7:* 1 SSL_do_handshake()失败(SSL: 错误:140770FC:SSL例程:SSL23_GET_SERVER_HELLO:未知协议) 与上游进行SSL握手时,客户端:192.168.160.1,服务器: 192.168.178.94,请求:“ GET / app2 HTTP / 1.1”,上游:“ https://192.168.160.2:5000/app2”,主机:“ 192.168.178.94”
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。