Nginx proxy_pass“无法获取”,但所需域名正常显示

Nginx proxy_pass“无法获取”,但所需域名正常显示

这是我的问题:我试图在“/”(位于 test.co)处执行 proxy_pass 到单独的域 - webflow.test.co - 而所有其他请求“/(.+)”都转到我的 nodejs 服务器。不幸的是,使用我当前的设置,我收到错误“无法获取 /index.html”。这对我来说很奇怪,尤其是因为直接转到 webflow.test.co 可以正常工作。

这是我的代码 - 任何帮助都非常感谢。我被这个问题困扰了一段时间,而且我是 nginx 的新手:

upstream nodejs {
    server 127.0.0.1:8081;
    keepalive 256;
}

# Redirect all non-HTTPS to non-WWW HTTPS
server {
    listen 8080;
    server_name "~^(?:www\.)?(.*)$";
    return 301 https://$host$request_uri;
}

# Redirect WWW HTTP to non-WWW HTTP
server {
    listen 4430;
    server_name "~^www\.(.*)$";
    return 301 https://$1$request_uri;
}

server {
    listen 443 ssl;
    server_name webflow.test.co;

    location / {
        proxy_pass http://webflow.test.co;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

# Reverse-proxy to http://nodejs
server {
    listen 4430;
    server_name "~^(?!www\.).*$";

    client_max_body_size 50M;

    location ~ /(.+) {
        proxy_pass http://nodejs;
        proxy_set_header Connection "";
        proxy_http_version 1.1;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

@Tero ilkanen 要求的编辑:顶部的两个重定向块(非 HTTPS 和非 WWW)是遗留的,但我认为我希望它们保留下来。我添加的是以下功能:我需要能够转到主页(在本例中为 test.co)并让其代理到 webflow.test.co,保持主机完好无损。所有其他请求都需要发送到 Nodejs 服务器 - 即 test.co/api、test.co/media、test.co/login 和其他一些请求。这只是一次测试运行 - 一旦我解决了这个问题,我将添加对特定 URL 的支持。但目前,主页 > webflow.test.co,其他一切都到 nodejs 服务器。我已经将两个位置块重新添加到单个 Nodejs 服务器块中,但现在我得到了一个无限重定向循环。我将在下面编辑并放置更新的代码。

upstream nodejs {
    server 127.0.0.1:8081;
    keepalive 256;
}

# Redirect all non-HTTPS to non-WWW HTTPS
server {
    listen 8080;
    server_name "~^(?:www\.)?(.*)$";
    return 301 https://$host$request_uri;
}

# Redirect WWW HTTP to non-WWW HTTP
server {
    listen 4430;
    server_name "~^www\.(.*)$";
    return 301 https://$1$request_uri;
}

# Reverse-proxy to http://nodejs
server {
    listen 4430;
    server_name "~^(?!www\.).*$";

    client_max_body_size 50M;

    location / {
        proxy_pass http://webflow.test.co;
        proxy_set_header Connection "";
        proxy_http_version 1.1;
        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;
    }

    location ~ /(.+) {
        proxy_pass http://nodejs;
        proxy_set_header Connection "";
        proxy_http_version 1.1;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

相关内容