使用 CNAME 进行 NGINX 重定向

使用 CNAME 进行 NGINX 重定向

这是我第一次使用 NGINX,遇到了一些麻烦。

因此,我有一个指向 test.example.com 的 A 记录,并且我创建了一个 CNAME toto.example.com 以重定向到 test.example.com。test.example.com 运行正常。当我访问它时,我被重定向到 test.example.com/mysite(我在 NGINX 上进行了重定向)。我还需要提到,我的 NGINX 正在重定向 HTTPS 中的每个请求(使用 Let's Encrypt 证书)。

我想要的是,当我访问 toto.example.com 时,我希望它被重定向到 test.example.com/mysite,但浏览器仍然显示 toto.example.com/mysite,而不是以 test.example.com/mysite 作为 URL。

请问我该怎么做?下面是我的 NGINX 配置(我只设置了一个站点)。请记住,每个请求都必须以 HTTPS 而不是 HTTP 发送。

server {
    listen 80;
    server_name test.example.com;

    include snippets/letsencrypt.conf;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2;
    server_name test.example.com;
    root /var/www;

    ssl_certificate /path/to/my/certificate;
    ssl_certificate_key /path/to/my/key;
    ssl_trusted_certificate /path/to/my/certificate;

    include snippets/ssl.conf;
    include snippets/letsencrypt.conf;

    location / {
       try_files $uri $uri/ /index.php;
       return 301 https://test.example.com/mysite;
    }

    location /sitetwo {
       index index.php;
       try_files $uri $uri/ /sitetwo/index.php;
    }

    location /sitethree{
       proxy_pass http://127.0.0.1:11334/;
       proxy_set_header Host $host;
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

    location /mysite {
       index index.php;
       try_files $uri $uri/ /mysite/index.php;

    }

    location ~ ^/mysite/(README|INSTALL|LICENSE|CHANGELOG|UPGRADING)$ {
       deny all;
    }

    location ~ ^/mysite/(bin|SQL|config|temp|logs)/ {
       deny all;
    }

    location ~* \.php$ {
         fastcgi_split_path_info ^(.+?\.php)(/.*)$;
         if (!-f $document_root$fastcgi_script_name) {return 404;}
         fastcgi_pass  unix:/run/php/php7.3-fpm.sock;
         fastcgi_index index.php;
         include fastcgi_params;
         fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
}

答案1

问题解决了!我在返回 301 URL 的末尾添加了一个 /。这样做没有用。所以我删除了 /,这样就成功了。

我有过这样的经历:

return 301 https://toto.example.com/mysite/;

我这样做了:

return 301 https://toto.example.com/mysite;

现在一切都运行正常!非常感谢 Richard!

相关内容