proxy_set_header Hodst $ host необходим для URL админ панели, но портит другие URL WordPress - PullRequest
0 голосов
/ 15 января 2019

Когда я ставлю

proxy_set_header Host $host;

в папке location / wordpress / в моем nginx.conf-файле я получаю рабочие URL-адреса Wordpress, кроме админ-панели, где / wordpress / удаляется из URL-адресов, что делает все ссылки в админ-панели неработоспособными.

Если я удаляю proxy_set_header Host $ host;, я получаю нерабочие URL-адреса Wordpress, но работающую админ-панель.

Я запускаю установку Wordpress с интерфейсом NextJs с docker-compose и обратным прокси-сервером nginx перед ним. Мне нужны как рабочие URL-адреса WordPress, так и панель администратора, потому что мне нужен доступ к RSS-каналу (/ feed-url, который не работает, когда я выполняю proxy_set_header-thing).

Мой блок местоположения в nginx-conf:

 location /wordpress/ {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-NginX-Proxy true;
        proxy_pass http://IP-TO-WORDPRESS:8000/;
        # proxy_set_header Host $host;
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Server $host;
        proxy_set_header X-Forwarded-Proto $scheme;
    }

Пытались

  • добавление и удаление proxy_set_header Host $ host,
  • добавление специального блока местоположения для wp-admin (/ wordpress / wp-admin - не работает)
  • изменение URL-адреса proxy_pass
  • изменение siteurl и home в wp_options в базе данных WordPress MySQL

Весь Nginx.conf:

events {
    worker_connections  1024;
    # worker_processes and worker_connections allows you to 
    calculate maxclients value:
    # max_clients = worker_processes * worker_connections
}

http{
    server {
        listen 80;
        listen [::]:80 default_server ipv6only=on;
        return 301 https://$host$request_uri;
    }

    # HTTPS ?~@~T proxy all requests to the Node app
    server {
        # Enable HTTP/2
        listen 443 ssl http2;
        listen [::]:443 ssl http2;
        server_name SERVER-NAME.no;

        # Use the Let?~@~Ys Encrypt certificates
        ssl_certificate /etc/letsencrypt/live/SERVER- 
        NAME.no/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/SERVER- 
        NAME.no/privkey.pem;

        # Include the SSL configuration from cipherli.st
        include snippets/ssl-params.conf;

        location / {
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For 
            $proxy_add_x_forwarded_for;
            proxy_set_header X-NginX-Proxy true;
            proxy_pass http://localhost:82/;
            proxy_ssl_session_reuse off;
            proxy_set_header Host $http_host;
            proxy_cache_bypass $http_upgrade;
            proxy_redirect off;
        }

        location = /wordpress {
            return https://SERVER-NAME.no/NEXT-JS-BLOG-PAGE;
        }

        location /wordpress/ {
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For 
            $proxy_add_x_forwarded_for;
            proxy_set_header X-NginX-Proxy true;
            proxy_pass http://IP.TO-WORDPRESS:8000/;
            # proxy_set_header Host $host;
            proxy_set_header X-Forwarded-Host $host;
            proxy_set_header X-Forwarded-Server $host;
            proxy_set_header X-Forwarded-Proto $scheme;
        }
    }
}

Ожидаемое:

Я ожидаю, что URL будут работать как в админ-панели WordPress, так и для постов WordPress и RSS-канала. Это не тот случай.

Пожалуйста, помогите, потому что я совершенно заблудился.

1 Ответ

0 голосов
/ 16 января 2019

Обнаружена проблема в приложении Wordpress, а не в конфигурации Nginx. Оказывается, в Wordpress есть нечто, называемое wp_admin_canonical_url (), которое устанавливает url в дополнение к siteurl и home.

См. https://wordpress.stackexchange.com/questions/269798/wrong-wp-admin-url.

...