NginX + WordPress + SSL + non-www + W3TC vhost 配置文件问题

NginX + WordPress + SSL + non-www + W3TC vhost 配置文件问题

我对仅在 https 上运行的 WordPress 站点的服务器块(使用 nginx 和 W3TC 浏览器缓存)有以下疑问。

环境:

Ubuntu——14.04LTS

nginx——1.4.6

PHP - 5.5.9

mysql - 版本 14.14 发行版 5.5.41

我的问题如下:

  1. “位置”部分的顺序重要吗?
  2. W3TC 块的顺序重要吗?
  3. 我见过有人在 listen 指令中放置“ssl”而不是使用“ssl on;”——这有关系吗?
  4. 我在顶级服务器块中处理 www => 非 www,但我没有明确解决http://域名.com=>https://domain.com (强制 SSL)——但它不知何故为我做到了这一点。有什么想法为什么它能工作,即使我没有告诉它?我很高兴它能工作,我只是想了解它为什么能工作。
  5. 任何有关设置的一般建议也都值得赞赏。谢谢!

虚拟主机配置:

服务器 {
  服务器名称www.domain.com;
  永久重写 ^(.*) https://domain.com$1;
}

服务器 {
  听443默认服务器;
  服务器名称域名.com;

  根/usr/share/nginx/html/domain.com;
  索引 index.php index.html index.htm;

  # BEGIN W3TC 浏览器缓存
  开启 gzip;
  gzip_types 文本/css 文本/x-component 应用程序/x-javascript 应用程序/javascript 文本/javascript 文本/x-js 文本/richtext 图像/svg+xml 文本/纯文本/xsd 文本/xsl 文本/xml 图像/x-icon;
  # 结束 W3TC 浏览器缓存

  ssl 开启;
  ssl_证书/etc/ssl/certs/domain.com.rapidssl.crt;
  ssl_certificate_key /etc/ssl/private/domain.com.key;
  ssl_会话_超时5分钟;
  ssl_协议SSLv3 TLSv1 TLSv1.1 TLSv1.2;
  ssl_ciphers "HIGH:!aNULL:!MD5 或 HIGH:!aNULL:!MD5:!3DES";
  ssl_prefer_server_ciphers开启;

  地点 / {
    try_files $uri $uri/ /index.php?q=$uri&$args;
  }

  错误页面 404 /404.html;
  错误页面 500 502 503 504 /50x.html;
  位置 = /50x.html {
    根目录/usr/share/nginx/html;
  }

  位置 ~ \.php$ {
    尝试文件$uri =404;
    fastcgi_pass unix:/var/run/php5-fpm.sock;
    fastcgi_index索引.php;
    包括 fastcgi_params;
  }
}

答案1

请不要在一个问题中发布多个问题。

当你不知道某件事情是如何运作的时候,第一步是搜索文档。对于 nginx,指令通过以下链接详尽解释:官方文件指令索引

  1. 这取决于位置块的性质。前缀位置块的顺序并不重要,但正则表达式位置块的顺序很重要,因为将选择第一个与请求 URI 匹配的位置块。

  2. 配置指令的顺序无关紧要,除了if块等少数情况外。Gzip 指令不属于这些情况。

  3. 事实上ssl on这是旧方法,而 listen 指令参数ssl是新方法。使用ssl on强制服务器块仅接受 HTTPS,而使用 listen 指令参数允许在同一个服务器块中同时处理 HTTP 和 HTTPS。

  4. 实际上,您明确要求 nginx 执行此操作。获得相同结果的另一种方法是使用return 301 https://domain.com$request_uri。重写模式^(.*)匹配所有 URI 并捕获它们。然后它将它们永久重写(301 重定向)为https://domain.com<uri>。请参阅文档如果您感到困惑,请了解重写指令的工作原理。

  5. 基于观点的问题不符合 SF 标准。

相关内容