首页 > 解决方案 > 在 Nginx 和 CloudFlare 上运行 Node.js 的两个网站的重定向问题

问题描述

我有两个文件sites-available,一个用于机器上运行的每个网站。两者都具有相同的代码,仅替换了网站的域名和端口。这两个站点也都符号链接到sites-enabled.

reesmorris.co.uk(效果很好):

# Remove WWW from HTTP
server {
    listen 80;
    server_name www.reesmorris.co.uk reesmorris.co.uk;
    return 301 https://reesmorris.co.uk$request_uri;
}

# Remove WWW from HTTPS
server {
    listen 443 ssl;
    ssl_certificate /etc/letsencrypt/live/reesmorris.co.uk/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/reesmorris.co.uk/privkey.pem;
    server_name www.reesmorris.co.uk;
    return 301 https://reesmorris.co.uk$request_uri;
}

# HTTPS request
server {
    # Enable HTTP/2
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name reesmorris.co.uk;

    ssl_certificate /etc/letsencrypt/live/reesmorris.co.uk/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/reesmorris.co.uk/privkey.pem;

    location / {
        proxy_pass http://127.0.0.1:3000;
        include /etc/nginx/proxy_params;
    }
}

francescoiacono.co.uk(有一个重定向循环):

# Remove WWW from HTTP
server {
    listen 80;
    server_name www.francescoiacono.co.uk francescoiacono.co.uk;
    return 301 https://francescoiacono.co.uk$request_uri;
}

# Remove WWW from HTTPS
server {
    listen 443 ssl;
    ssl_certificate /etc/letsencrypt/live/francescoiacono.co.uk/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/francescoiacono.co.uk/privkey.pem;
    server_name www.francescoiacono.co.uk;
    return 301 https://francescoiacono.co.uk$request_uri;
}

# HTTPS request
server {
    # Enable HTTP/2
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name francescoiacono.co.uk;

    ssl_certificate /etc/letsencrypt/live/francescoiacono.co.uk/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/francescoiacono.co.uk/privkey.pem;

    location / {
        proxy_pass http://127.0.0.1:4000;
        include /etc/nginx/proxy_params;
    }
}

为了进行实验,我return将损坏网站的第一个服务器块中的值替换为 403,即使该网站使用 HTTPS 似乎也会显示。此外,完全删除损坏网站上的第一个服务器块将导致网站完全重定向到已经运行的网站。

这两个网站都使用 CloudFlare 进行 DNS 路由。CloudFlare 在两个网站上都“暂停”,这意味着它只处理路由,其中​​两个网站具有相同的到服务器的路由,且 AAAA 和 A 记录相同。

我对服务器块不太熟悉,所以如果有人对正在发生的事情有任何想法,那么将不胜感激。

标签: node.jsnginxcloudflare

解决方案


似乎通过使两个网站在 CloudFlare DNS 中“暂停”来解决此问题。这是最初完成的,尽管可能没有足够的时间来传播。

自从创建这篇文章以来,我没有修改过代码,尽管我确保两个站点都在 CloudFlare 上“暂停”(reesmorris.co.uk曾经是,但francescoiacono.co.uk不是) - 所以这似乎是 CloudFlare 的配置错误问题。


推荐阅读