Nginx 301将http(裸和www)重定向到https www,并将通配符子域重定向到https

布里亚努斯

我正在尝试为具有大量自定义域名的多租户Saas设置Nginx代理服务器。我想要做的是创建一个服务器块,该服务器块可以处理以下所有请求,所有请求均为301永久性请求:

  1. http://custom-domain.comhttps://www.custom-domain.com(custom-domain.com可以是任何用户设置的域名)

  2. 从http://www.custom-domain.comhttps://www.custom-domain.com(同样,任何域名)

  3. http:// .saas-domain.com到https:// .saas-domain.com(saas-domain,com是我的服务的单个域名)

我目前正在使用一些If语句来处理此问题,但是它看起来很骇人,我希望以更有效的方式寻求帮助:

server {
    listen 80 default_server;

    location / {

      # if 'www' redirect to https
      if ($host ~* ^(www)) {
        return 301 https://$host$request_uri;
      }
      # if '*.saas-domain.com' redirect to https://*.saas-domain.com
      if ($host ~* ^(.*)\.saas-domain\.com) {
        return 301 https://$host$request_uri;
      }
      # if not 'www' redirect to https and add 'www'
      if ($host !~* ^(www)) {
        return 301 https://www.$host$1 permanent;
      }
    }
}

这是处理我所有情况的最佳方法吗?我认为复杂之处在于通配符自定义域。我担心If语句的开销。TIA!

markybb41

Nginx建议不要使用“ If”语句,除非您没有其他方法可以解决问题。我建议为您的域名添加单独的块,因为这将为您提供更大的灵活性。

请尝试以下操作,以查看是否有帮助。

# Capture requests that already have www and redirect to https

server {

    listen 80;
    server_name www.*;
    return 301 https://$server_name$request_uri;

}

# Captures the saas-domain.com requests and redirects them

server {

    listen 80 ;
    server_name *.saas-domain.com;
    return 301 https://$server_name$request_uri;

}

# Default capture everything else and redirect to https://www.

server {

    listen 80 default_server;
    server_name _;
    return 301 https://www.$host$request_uri;

}

在生产中实施之前先进行测试。

Nginx服务器名称

Nginx如果是邪恶的

Nginx变量

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Nginx将http:// www和裸http / https重定向到https:// www

Nginx将非www重定向到domain.com和子域的www和https

将Nginx HTTP / HTTPS www重定向到非www

nginx将非www重定向到www和https

NGINX 将 http 重定向到 https 和 www。到非 www

NGINX:将非www https重定向到https:// www

NGINX将http重定向到https,将非www重定向到ww

Nginx将所有[http / www / https www]重定向到[https non-www]

Nginx-(http / https)非www到www重定向

Nginx重定向/重写:www到非www和https

Nginx:将非www重定向到www https

入口nginx从www重定向到https

将 www https 站点重定向到非 www https 导致 nginx 中的重定向过多

Nginx重定向HTTP到HTTPS和WWW到非WWW

Nginx将子域foo重定向到www.foo到www.www.foo等

如何使用用于HTTPS和Nginx的certbot将www重定向到非www

NGINX 将 http 重定向到 https

是否从htaccess中的裸http和https域重定向到https:// www域?

nginx将所有非WWW重定向到HTTPS WWW

使用Nginx将动态顶级域重定向到www子域

如何将http重定向到https和将https:// www重定向到https://

IIS将非www重定向到www并将HTTP重定向到https

Http未重定向到https nginx

nginx http到https重定向问题

HTTP到HTTPS Nginx的重定向过多

如何在 Nginx 中从 http://www.* 重定向到 https://*?

NGiNX-重定向到https不能通过最初请求的子域重写/替换正确的通配符

PHP:将主域重定向到https:// www,将子域重定向到https://(不带www)

Nginx将所有内容重定向到www https