express - nginx反向代理在docker容器内表达服务器
问题描述
我无法将我的请求代理传递到 docker 容器内的快速服务器。
这是我的设置:
码头集装箱内的快递服务器。我在快速服务器上设置了两条路由,即“/”和“/accounts”。docker文件和nodejs官网提供的一样 docker
运行命令:
docker run -p 7777:8000 -d myImage
Nginx 配置到 proxy_pass 到端口 7777。我也在 nginx 中安装了 let encrypt
问题是当我 curl localhost:7777 或 curl localhost:7777/accounts 时,它会正确响应请求。但是当我尝试使用我在 nginx 中设置的域(example.com)请求时,它只会响应 example.com 请求。
在 example.com/accounts 中,它将返回“404 not found”。
编辑:nginx 配置(来自 awnser,删除了评论,重新排序)
server {
server_name example.com www.example.com;
listen [::]:443 ssl ipv6only=on; # managed by Certbot
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
location /{
proxy_redirect off;
proxy_pass http://127.0.0.1:7777;
proxy_set_header Host $host;
try_files $uri $uri/ =404;
}
}
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name www.example.com example.com;
return 404; # managed by Certbot
if ($host = example.com) {
return 301 https://$host$request_uri;
} # managed by Certbot
if ($host = example.com) {
return 301 https://$host$request_uri;
} # managed by Certbot
}
解决方案
推荐阅读
- html - 如何“点击聊天”whatsapp 群组或多个号码
- java - 在后台执行/运行 Flutter 应用程序
- windows - 批量使用 Clip 时转义字符
- c++ - 在类内和类外的定义中做类前向声明有区别吗
- lodash - lodash 过滤深度嵌套的对象,返回这些对象的数组
- python - 使用 NumPy 在 Python 中调整神经网络
- python - Ctypes 错误:调用的过程没有足够的参数(缺少 8 个字节)或错误的调用约定
- flutter - 当我的应用程序在分屏模式下运行时如何在 Flutter 中获取屏幕大小
- angular - Azure Devops 基于不同配置或一个工件的多个工件
- modelica - Modelica 编码标准/新的 OpenModelica 编译器前端