NginX + WordPress + SSL + não-www + W3TC vhost arquivo de configuração perguntas

3

Eu tenho as seguintes perguntas sobre o (s) meu (s) bloco (s) de servidor para um site WordPress rodando somente em https, com o cache do navegador nginx e W3TC.

Ambiente:

Ubuntu - 14.04LTS

nginx - 1.4.6

PHP - 5.5.9

mysql - Ver 14.14 Distrib 5.5.41

Minhas perguntas são as seguintes:

  1. A ordem das seções "local" é importante?
  2. A ordem do bloco W3TC é importante?
  3. Eu vi alguns onde "ssl" é colocado na diretiva de escuta em vez de usando "ssl on;" mais tarde - isso importa?
  4. eu manipulo www = > não-www no bloco de servidores superior, mas eu não sou explicitamente endereçando o link = > link (forçando o SSL) - mas de alguma forma está fazendo isso por mim. Alguma idéia porque está funcionando mesmo que eu não tenha dito? Estou feliz que seja trabalhando, eu só quero entender porque está funcionando.
  5. Qualquer outro conselho geral sobre a configuração também é apreciado. Obrigado!

Configuração do host virtual:

server {
  server_name www.domain.com;
  rewrite ^(.*) https://domain.com$1 permanent;
}

server {
  listen 443 default_server;
  server_name domain.com;

  root /usr/share/nginx/html/domain.com;
  index index.php index.html index.htm;

  # BEGIN W3TC Browser Cache
  gzip on;
  gzip_types text/css text/x-component application/x-javascript application/javascript text/javascript text/x-js text/richtext image/svg+xml text/plain text/xsd text/xsl text/xml image/x-icon;
  # END W3TC Browser Cache

  ssl on;
  ssl_certificate /etc/ssl/certs/domain.com.rapidssl.crt;
  ssl_certificate_key /etc/ssl/private/domain.com.key;
  ssl_session_timeout 5m;
  ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
  ssl_ciphers "HIGH:!aNULL:!MD5 or HIGH:!aNULL:!MD5:!3DES";
  ssl_prefer_server_ciphers on;

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

  error_page 404 /404.html;
  error_page 500 502 503 504 /50x.html;
  location = /50x.html {
    root /usr/share/nginx/html;
  }

  location ~ \.php$ {
    try_files $uri =404;
    fastcgi_pass unix:/var/run/php5-fpm.sock;
    fastcgi_index index.php;
    include fastcgi_params;
  }
}
    
por Paul 27.01.2015 / 19:45

1 resposta

3

Por favor, não poste várias perguntas em uma.

O primeiro passo, quando você não sabe como algo funciona, é procurar pela documentação. No caso do nginx, as diretivas são exaustivamente explicadas através do índice da diretiva de documentação oficial .

  1. Depende da natureza do bloco de localização. A ordem dos blocos de localização prefixados não é importante, mas a ordem dos blocos de localização regex é, desde que a primeira que corresponda ao URI da solicitação seja selecionada.

  2. A ordem de diretivas de configuração não importa, exceto em alguns casos, como if blocks. As diretivas do Gzip não fazem parte delas.

  3. Na verdade, ssl on é a maneira antiga de fazer isso e o parâmetro de diretiva de escuta ssl é o novo. O uso de ssl on força o bloco do servidor a aceitar HTTPS apenas enquanto o uso do parâmetro de diretiva de escuta permite manipular HTTP e HTTPs no mesmo bloco de servidor.

  4. Na verdade, você pediu explicitamente ao nginx para fazer isso. Outra maneira de obter o mesmo resultado é usar return 301 https://domain.com$request_uri . A regravar patten ^(.*) corresponde a todos os URIs e os captura. Em seguida, reescreve-os permanentemente (redirecionamento 301) para https://domain.com<uri> . Consulte a documentação para entender como a diretiva de reescrita funciona se você estiver confuso.

  5. As perguntas com base em opinião não se encaixam nos padrões de SF.

por 27.01.2015 / 20:36