nginx proxy https and wordpress

Конфиг nginx

upstream wp {
server 10.1.2.2(тут можно прописать порт например «:8080»);
server 10.1.2.3;
}

server {
listen 80;
server_name test.ru;

return 301 https://test.ru$request_uri;

access_log /var/log/nginx/test.ru-access.log;
error_log /var/log/nginx/test.ru-error.log;
location / {
proxy_pass http://wp;
}
}

server {
listen 443 ssl;
server_name test.ru;
access_log /var/log/nginx/test.ru-access.log;
error_log /var/log/nginx/test.ru-error.log;
ssl_certificate /etc/letsencrypt/live/test.ru/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/test.ru/privkey.pem;
ssl_prefer_server_ciphers on;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS;

add_header Strict-Transport-Security «max-age=31536000»;

location / {
proxy_pass http://wp;

#обращение к ноде будет по http. хотя используется https. http быстрее обрабатывать, не нужен сертификат, не нужно копировать сертификат. Меньше ресурсов затрачивается.

proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-Proto $scheme;

       }
    }

Важно!

в файле wp-config.php добавить строку:

if (strpos($_SERVER[‘HTTP_X_FORWARDED_PROTO’], ‘https’) !== false) $_SERVER[‘HTTPS’]=’on’;

тогда будет контент правильно отдаваться по https.

php скрипт для тестирования работы нод:

«<?php»

header( ‘Content-Type: text/plain’ );
echo ‘Host: ‘ . $_SERVER[‘HTTP_HOST’] . «\n»;
echo ‘Remote Address: ‘ . $_SERVER[‘REMOTE_ADDR’] . «\n»;
echo ‘X-Forwarded-For: ‘ . $_SERVER[‘HTTP_X_FORWARDED_FOR’] . «\n»;
echo ‘X-Forwarded-Proto: ‘ . $_SERVER[‘HTTP_X_FORWARDED_PROTO’] . «\n»;
echo ‘Server Address: ‘ . $_SERVER[‘SERVER_ADDR’] . «\n»;
echo ‘Server Port: ‘ . $_SERVER[‘SERVER_PORT’] . «\n\n»;

«»?>»»

Запись опубликована в рубрике nginx, Общее. Добавьте в закладки постоянную ссылку.