Я обслуживаю 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