обратный прокси-сервер nginx - PullRequest
0 голосов
/ 16 апреля 2019

Я обслуживаю WordPress через обратный прокси-сервер (WordPress находится на Docker).Я хочу также обслуживать статические целевые страницы, используя тот же server_name.Я пробовал это:

server {
    error_log  /var/log/nginx/error.log debug;
    listen            80;
    server_name ${NGINX_HOST};
    sendfile          on;
    tcp_nodelay       on;
    root              /static-pages;
    index             index.html index.php;

    location / {
        try_files $uri $uri/ @wordpress;
    }

    location @wordpress {
        proxy_read_timeout    90;
        proxy_connect_timeout 90;
        proxy_redirect        off;
        proxy_pass http://wordpress;

        proxy_set_header      X-Real-IP $remote_addr;
        proxy_set_header      X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header      X-Forwarded-Proto $scheme;
        proxy_set_header      Host $http_host;
    }
}

Статические страницы работают, но корень / (обратный прокси-сервер WordPress) возвращает 403 запрещенную ошибку (вероятно, он не может индексировать /static-pages/index.html, поскольку он не существует).Конфигурация правильная для моих нужд?Спасибо.

Имейте в виду, в wordpress также есть страницы, которые будут с этим URI: /about или /jobs, и эти каталоги отсутствуют в /static-pages, поэтому он должен достигать @wordpress location.

My docker-compose.yml:

version: '3.7'
services:
  db:
    image: mysql:5.7
    restart: always
    environment:
      MYSQL_DATABASE: wordpress
      MYSQL_RANDOM_ROOT_PASSWORD: '1'
      MYSQL_USER: wordpress
      MYSQL_PASSWORD: wordpress
    volumes:
       - db_data:/var/lib/mysql
  wordpress:
    image: wordpress
    restart: always
    depends_on:
       - db
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_NAME: wordpress
      WORDPRESS_DB_USER: wordpress
      WORDPRESS_DB_PASSWORD: wordpress
      WORDPRESS_DEBUG: 1
      WORDPRESS_CONFIG_EXTRA: |
        define('WP_HOME', 'http://localhost:8080');
        define('WP_SITEURL', 'http://localhost:8080');
    volumes:
      - ../wordpress-nisite:/var/www/html
      - ./uploads.ini:/usr/local/etc/php/conf.d/uploads.ini

  nginx:
    image: nginx
    ports:
      - "8080:80"
    depends_on:
      - wordpress
    restart: always
    volumes:
     - ./nginx-configs/main.template:/etc/nginx/conf.d/main.template
     - ../:/static-pages/
    environment:
      - "NGINX_HOST=localhost:8080"
    ports:
     - "8080:80"
    command: /bin/bash -c "envsubst '$${NGINX_HOST}' < /etc/nginx/conf.d/main.template > /etc/nginx/conf.d/default.conf && exec nginx-debug -g 'daemon off;'"

volumes:
  db_data:

Ссылка: https://www.nginx.com/resources/wiki/start/topics/tutorials/config_pitfalls/#proxy-everything

...