首页 > 解决方案 > nginx反向代理在docker容器内表达服务器

问题描述

我无法将我的请求代理传递到 docker 容器内的快速服务器。
这是我的设置:

  1. 码头集装箱内的快递服务器。我在快速服务器上设置了两条路由,即“/”和“/accounts”。docker文件和nodejs官网提供的一样 docker
    运行命令:
    docker run -p 7777:8000 -d myImage

  2. 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
}

标签: expressdockernginx

解决方案


推荐阅读