Перейти к содержимому

Настройте https и http на WordPress Nginx

0
[root@serv01 nginx]# cat nginx.conf # For more information on configuration, see: # * Official English Documentation: http://nginx.org/en/docs/ # * Official Russian Documentation: http://nginx.org/ru/docs/  user nginx; worker_processes 1;  error_log /var/log/nginx/error.log; #error_log /var/log/nginx/error.log notice; #error_log /var/log/nginx/error.log info;  pid /run/nginx.pid;  events { worker_connections 1024; }  http { include /etc/nginx/mime.types; default_type application/octet-stream;  log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"';  access_log /var/log/nginx/access.log main;  sendfile on; #tcp_nopush on;  #keepalive_timeout 0; keepalive_timeout 65;  #gzip on;  index index.php index.html index.htm;  # Load modular configuration files from the /etc/nginx/conf.d directory. # See http://nginx.org/en/docs/ngx_core_module.html#include # for more information. include /etc/nginx/conf.d/*.conf;  server { listen 80 default_server; server_name localhost; root /var/www/wordpress;  #charset koi8-r;  #access_log /var/log/nginx/host.access.log main;  # Load configuration files for the default server block. include /etc/nginx/default.d/*.conf;  location / { try_files $uri $uri/ =404; }   # redirect server error pages to the static page /40x.html # error_page 404 /404.html; location = /40x.html { }  # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { } location ~ \.php$ { try_files $uri =404; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }  server { listen 443; server_name home.local; ssl on; ssl_certificate /etc/nginx/ssl/server.crt; ssl_certificate_key /etc/nginx/ssl/server.key; root /var/www/wordpress; index index.php index.htm index.html } } 

я пытаюсь использовать https для моего wordpress, http работает нормально, но когда я пытаюсь добавить блок httpd-сервера, nginx не запускается, я предполагаю, что он не в том месте. Любая помощь будет принята с благодарностью.

150 просмотров
user3594093 спросил 11 лет назад
U 1

1 ответ

1

Не уверен, что было бы хорошо ответить на этот, вероятно, "мертвый и похороненный" вопрос, но здесь мы идем ...

Базовая конфигурация (т.е. безопасность )

  1. Создайте свой закрытый ключ (> = 2048bit) и свой сертификат. Я предполагаю, что они у вас уже есть, иначе посмотрите на letsencrypt.org . Убедитесь, что ваш сертификат включает в себя полную цепочку сертификатов (обычно это промежуточные / юридические сертификаты). Что касается параметров Диффи-Хеллмана, вы можете сгенерировать их, запустив openssl dhparam -out /path/to/dhparam.pem 2048.
  2. Настройте параметры SSL в соответствии с генератором конфигурации Mozilla SSL ( промежуточные настройки по состоянию на 2016-06-30):

    server { listen 443 ssl; listen [::]:443 ssl; server_name localhost; root /var/www/wordpress;  ### SSL/TLS SETTINGS ### # certs sent to the client in SERVER HELLO are concatenated in ssl_certificate ssl_certificate /path/to/signed_cert_plus_intermediates; ssl_certificate_key /path/to/private_key; ssl_session_timeout 1d; ssl_session_cache shared:SSL:50m; ssl_session_tickets off;  # Diffie-Hellman parameter for DHE ciphersuites, recommended 2048 bits ssl_dhparam /path/to/dhparam.pem;  # intermediate configuration. tweak to your needs. ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS'; ssl_prefer_server_ciphers on;   ### OCSP Stapling ### # fetch OCSP records from URL in ssl_certificate and cache them ssl_stapling on; ssl_stapling_verify on;  # verify chain of trust of OCSP response using Root CA and Intermediate certs ssl_trusted_certificate /path/to/root_CA_cert_plus_intermediates;  resolver <IP DNS resolver>;  include /etc/nginx/default.d/*.conf;  location / { try_files $uri $uri/ =404; }  location ~ \.php$ { try_files $uri =404; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } } 

Усовершенствованная конфигурация (т.е. заходи на меня, АНБ! (Ну нет, но ...) )

Возьмите базовую конфигурацию выше и настройте ее следующим образом:

  1. Выберите (по крайней мере) 3072bit при создании сертификата и параметров Диффи-Хеллмана (да, это займет некоторое время, но оно того стоит).
  2. Используйте только TLS1.2: ssl_protocols TLSv1.2;
  3. Используйте безопасную кривую: ssl_ecdh_curve secp384r1;
  4. Используйте «современные» наборы шифров (по состоянию на 2016-06-30): ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256';
  5. Обеспечить HTTPS для всех:

    • Перепишите свой serverблок HTTP следующим образом:

      server { listen 80; listen [::]:80; server_name mySuperServer; return 301 https://$server_name$request_uri; } 
    • Используйте заголовок HSTS, чтобы навигатор вашего посетителя использовал исключительно HTTPS: add_header Strict-Transport-Security 'max-age=31536000; includeSubdomains; preload';

  6. Ваш сервер также может защитить ваш сайт (в некоторой степени), установив следующие заголовки:

    add_header X-Frame-Options DENY; add_header X-XSS-Protection "1; mode=block"; add_header X-Content-Type-Options nosniff; add_header Content-Security-Policy "default-src 'none'; 
  7. Общие рекомендации здесь: никогда не используйте rootдля изменения ваших файлов. Используйте sudoвместо этого.

бонус

  1. Если на вашем сервере работает nginx> 1.9.5, вы можете использовать HTTP / 2, добавив http2в свою listenдирективу.
  2. Ваш сервер получил адрес IPv6 (и поддерживает HTTP / 2)? Хорошо ! Добавьте listen [::]:443 ssl http2;ниже первую listenдирективу.
  3. Планируете ли вы использовать свой сервер для нескольких доменов? Затем вы должны установить access_logи error_logдля каждого serverблока.
  4. Копирование / вставка редко вызывает ... Вы можете переместить ### SSL/TLS SETTINGS ###блок в текстовом файле и включить его в свою конфигурацию. То же самое для вашего вызова CGI в PHP.
  5. Вы можете ускорить обмен данными между Nginx и интерпретатора PHP немного, используя сокет UNIX, вместо того, чтобы слушать вас LoopBack интерфейс: fastcgi_pass unix:/var/run/php5-fpm.sock;.

В результате ваш serverблок должен выглядеть примерно так:

#HTTP server server { listen 80; listen [::]:80; server_name mySuperServer; return 301 https://$server_name$request_uri; }  # HTTPS server server { listen 443 ssl http2 default_server; listen [::]:443 ssl http2; server_name mySuperServer;  index index.php index.html index.htm; root /path/to/your/files/mySuperServer;  access_log /var/log/nginx/mySuperServer/access.log; error_log /var/log/nginx/mySuperServer/error.log;  ### SSL/TLS SETTINGS ### ssl on; ssl_certificate /path/to/your/cert.pem; ssl_certificate_key /path/to/your/privkey.pem; ssl_dhparam /path/to/your/dh_parameters.pem;  include securityrules.inc;  include fastcgi.inc; } 

Содержание securityrules.inc:

ssl_protocols TLSv1.2; ssl_ecdh_curve secp384r1; ssl_prefer_server_ciphers on; ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256'; ssl_session_timeout 1d; ssl_session_cache shared:SSL:10m; ssl_session_tickets off; ssl_stapling on; ssl_stapling_verify on;  ### HTTP HEADERS ### add_header Strict-Transport-Security 'max-age=31536000; includeSubdomains; preload'; add_header X-Frame-Options DENY; add_header X-XSS-Protection "1; mode=block"; add_header X-Content-Type-Options nosniff; add_header Content-Security-Policy "default-src 'none'; 

Содержание fastcgi.inc:

location ~ \.php$ { include fastcgi_params; fastcgi_keep_conn on; fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } 

Я добавлю больше ссылок, как только получу необходимое количество репутации ...

Florent_ATo · 10 лет назад · 0
Florent_ATo ответил 10 лет назад
F 41