从非 www 重定向到包含 URL 的 www [重复]

问题描述 投票:0回答:1

我已在 Ubuntu 20 服务器上部署了 Next.js 14.x 应用程序,并尝试配置 Nginx 将我的网站从非 www URL 重定向到 www URL。我想这样做是为了避免站点重复并避免使用

Auth0
登录时出现错误。下面的代码不会产生预期的重定向。服务器使用
pm2
启动,并在生产模式下在
localhost:3000
上运行,之后站点从
localhost:3000
重定向到域。

域.conf

server {
    listen 80;
    listen [::]:80;
        server_name example.com;
        return 301 https://www.example.com$request_uri;
  }

server {
    listen 443 ssl;
    listen [::]:443 ssl;
    server_name www.example.com;
    ssl_certificate /etc/nginx/ssl-certs/lapki-certs-key/common-cert.crt;
    ssl_certificate_key /etc/nginx/ssl-certs/lapki-certs-key/9172942.key;
            location / {
                # reverse proxy for next server
                proxy_pass http://localhost:3000;
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection 'upgrade';
                proxy_cache_bypass $http_upgrade;
        }
}

我是一名 Web 开发人员,也是 DevOps 的新手。我也害怕犯错误,因为该应用程序现在正在全球运行。可能是我这里配置有误,求懂的人帮忙。

ubuntu devops nginx-config
1个回答
0
投票

@Raptor 感谢您的建议。 我仔细研究了您建议的答案,它对我有用。很抱歉造成混乱。现在代码如下所示:

server {
    listen 80;
    listen 443 ssl;
        server_name example.com;
    ssl_certificate /etc/nginx/ssl-certs/common-cert.crt;
    ssl_certificate_key /etc/nginx/ssl-certs/9172942.key;

        return 301 $scheme://www.example.com$request_uri;
  }

server {
    listen 80;
    listen 443 ssl;
    server_name www.example.com;
    ssl_certificate /etc/nginx/ssl-certs/common-cert.crt;
    ssl_certificate_key /etc/nginx/ssl-certs/9172942.key;

            location / {
                # reverse proxy for next server
                proxy_pass http://localhost:3000;
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection 'upgrade';
                proxy_cache_bypass $http_upgrade;
        }
}
© www.soinside.com 2019 - 2024. All rights reserved.