У меня есть следующие вопросы о моем блоке (ах) сервера для сайта WordPress, работающего исключительно на https, с кешированием браузера nginx и W3TC.
Окружающая среда:
Ubuntu - 14.04LTS
nginx - 1.4.6
PHP - 5.5.9
mysql - Версия 14.14, Distrib 5.5.41
У меня следующие вопросы:
Конфигурация виртуального хоста:
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; } }
Пожалуйста, не задавайте несколько вопросов в одном.
Первый шаг, когда вы не знаете, как что-то работает, - это поиск документации. В случае с nginx директивы исчерпывающе объяснены через указатель директив официальной документации.
Это зависит от характера блока расположения. Порядок блоков расположения с префиксом не важен, но порядок блоков расположения регулярных выражений имеет значение, поскольку будет выбран первый, соответствующий URI запроса.
Порядок директив конфигурации не имеет значения, за исключением нескольких случаев, например if
блоки. Директивы Gzip в их состав не входят.
по факту ssl on
это старый способ сделать это, и параметр директивы listen ssl
это новый. Использование ssl on
заставляет блок сервера принимать HTTPS только в то время, как использование параметра директивы прослушивания позволяет обрабатывать как HTTP, так и HTTP в одном и том же блоке сервера.
На самом деле вы явно просили nginx сделать это. Другой способ получить тот же результат - использовать return 301 https://domain.com$request_uri
. Шаблон перезаписи ^(.*)
соответствует всем URI и фиксирует их. Затем он постоянно перезаписывает их (301 редирект) на https://domain.com<uri>
. Обратитесь к документация чтобы понять, как работает директива rewrite, если вы запутались.
Вопросы, основанные на мнении, не соответствуют стандартам SF.