【问题标题】:nginx force SSL no-www redirection issuesnginx 强制 SSL 无 www 重定向问题
【发布时间】:2015-10-05 01:15:07
【问题描述】:

过去几天我一直在努力让它正常工作,但我做不到。

(stackoverflow 不允许我发布两个以上的实际链接——忽略反斜杠)

通常的结果是example\.netwww.example\.net会重定向到http\s://example.net,而http\s://www.example\.net不会重定向到http\s://example.net,还有一个常见的情况是来自浏览器的消息,声称页面没有正确重定向。

我正在尝试做的是绝对强制所有请求转到 http\s://example.net$request_uri。

            example\.net => http\s://example\.net
        www.example\.net => http\s://example\.net
https://www.example\.net => http\s://example\.net

nginx 站点配置:

upstream backend {
  server unix:/var/run/php5-fpm.sock;
}

server {
  listen 80;
  server_name www.example\.net example.net;
  return 301 http\s://example\.net$request_uri;
}

server {
  listen 443 ssl default_server;

  server_name example\.net;

  include snippets/snakeoil.conf;

  root /var/www/html/example;

  charset utf-8;
  index index.php;

  access_log /var/log/example-access.log;
  error_log /var/log/example-error.log;

  location / {
    try_files $uri $uri/ @extensionless-php;
    index index.php;
  }

  location ~ .php {
    try_files $uri =404;
    fastcgi_pass backend;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
  }

  location @extensionless-php {
    rewrite ^(.*)$ $1.php last;
  }

  location /nginx_status {
    stub_status on;
    access_log off;
    allow 127.0.0.1;
    deny all;
  }
}

谁能告诉我我做错了什么?

【问题讨论】:

    标签: linux redirect ssl nginx


    【解决方案1】:

    创建 2 个块来处理重定向到非 www HTTPS。 最后一个块是您放置常用网站的配置/规则的位置。

    server {
        listen               80;
        server_name          www.example.net
                             example.net;
        return               301 https://example.net$request_uri;
    }
    
    server {
        listen               443 ssl;
        server_name          www.example.net;
        ssl_certificate      path/to/cert;
        ssl_certificate_key  path/to/key;
        return               301 https://example.net$request_uri;
    }
    server {
        listen               443 ssl;
        server_name          example.net;
        ssl_certificate      path/to/cert;
        ssl_certificate_key  path/to/key;
    
        # the rest goes here...
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-04-02
      • 2015-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-23
      • 2020-09-27
      相关资源
      最近更新 更多