如何配置 nginx 将所有请求从域别名重定向到主域?

sor*_*rin 5 nginx web-server redirect 301-redirect

我确实有一个响应多个域的 nginx 服务器,我确实想将所有请求重定向到主域。

例如:网站响应的xxx xxx.example.com yyy.example.com $hostname两个httphttps

我想以这样的方式配置服务器,以便对其他域名的所有请求都将重定向到xxx.example.com.

Max*_*nin 25

最有效、最干净的方法是配置两个单独的 server{} 块 - 一个用于重定向,另一个(具有规范名称)用于实际处理请求。{}

示例配置:

server {
    listen 80;
    listen 443 ssl;

    server_name xxx yyy.example.com $hostname;

    ssl_certificate ...
    ssl_certificate_key ...

    return 302 $scheme://xxx.example.com$request_uri;
}

server {
    listen 80;
    listen 443 ssl;

    server_name xxx.example.com;

    ssl_certificate ...
    ssl_certificate_key ...

    ...
}
Run Code Online (Sandbox Code Playgroud)

文档:


Bre*_*ker 1

我认为这些思路应该有效:

set $primary_domain "xxx.example.com";
if ($host != $primary_domain) {
    rewrite ^ $scheme://$primary_domain permanent;
}
Run Code Online (Sandbox Code Playgroud)

  • 这是解决问题的最糟糕的方法。http://wiki.nginx.org/Pitfalls#Server_Name 和 http://nginx.org/en/docs/http/converting_rewrite_rules.html (4认同)