programing

워드프레스 도커 컨테이너로 리디렉션할 nginx 하위 경로

minimums 2023. 11. 4. 10:32
반응형

워드프레스 도커 컨테이너로 리디렉션할 nginx 하위 경로

배경

Nginx에서 실행되는 기존 웹사이트에 도커라이즈드 블로그 스택(Wordpress + MariaDB)을 추가하는 작업을 하고 있습니다.location /이미 웹사이트를 서비스하고 있고, 나는 Nginx config에 논리를 추가하라는 지시를 받았습니다./blog모든 트래픽을 도커 컨테이너로 리디렉션합니다.

시도 1

  • 저는 프레스 컨테이너라는 단어를 시작했습니다.localhost:9999서버에서.
  • 참고문헌을 사용하여 추가 논리를 추가했습니다.

location ^~ /blog { proxy_pass http://localhost:9999; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_set_header X-Forwarded-Proto $scheme; } 문제:

워드프레스 리디렉션됨http://server/blog로.http://wp-admin/install.php, 규칙이 없어서 404를 받았습니다.

시도2

제가 바꿨습니다.location처리하다/blog다음을 포함하는 URL 뿐만 아니라wp-.*. 모든 워드프레스 페이지에는 해당 URL이 있을 것으로 가정합니다.

location ~ ^/(blog|wp-.*) {

이것은 워드프레스 설정을 통해 작동했습니다.그리고 내가 명시적으로 방문한다면,http://server/wp-admin블로그 관리 페이지로 갈 수 있습니다.

문제:

  • Wordpress 블로그 페이지가 위의 정규어를 충족하지 않으며, 404를 반환합니다.http://server/?p=31는 블로그 게시물에 대한 링크입니다.

시도 3

그냥 그 일 때문에 제가 방향을 바꿨습니다.location /도커 컨테이너로 이동하면 블로그가 완벽하게 작동합니다.하지만 슬프게도 그것은 제가 가지고 있는 문제의 진술이 아닙니다.

질문.

다음으로 워드프레스별 요청을 모두 처리하려면 어떻게 해야 합니까?여기에 더 우아한 해결책이 있을 때, 저는 반란군들과 싸우는 고리에 빠져들고 있는 것 같습니다.

참고문헌

  1. nginx 프록시 패스 하위 경로가 리디렉션되지 않음
  2. NGINX 구성에서 두 위치에 대해 동일한 규칙을 가질 수 있는 방법은 무엇입니까?
  3. nginx 도커 컨테이너로 리디렉션

https://stackoverflow.com/a/41479776/1264360 에서 자체적으로 답변한 SO 질문에 따르면,

// add these lines to wp-config.php
define('WP_SITE_URL', 'http://example.com/blog');
define('WP_HOME', 'http://example.com/blog');

$_SERVER['REQUEST_URI'] = '/blog' . $_SERVER['REQUEST_URI'];

다음을 통해 워드프레스 웹사이트에 접근하기를 원한다고 가정합니다.wp서브디렉토리예를 들어,

http://your-website.com/wp

wp-config.php를 변경하지 않고 이 작업을 수행할 수 있었던 방법은 다음과 같습니다.핵심은 사용하는 것입니다.working_dir지시의

도커- compose.yml

version: '3'
services:

 nginx:
   image: nginx:1.17
   container_name: nginx
   restart: unless-stopped
   depends_on:
     - wordpress
   ports:
     - '80:80'
   networks:
     - app-network
   volumes:
     - ./config/nginx/nginx.conf:/etc/nginx/nginx.conf:ro

 db:
   image: mysql:5.7
   container_name: db
   volumes:
     - db_data:/var/lib/mysql
   restart: always
   environment:
     MYSQL_ROOT_PASSWORD: somewordpress
     MYSQL_DATABASE: wordpress
     MYSQL_USER: wordpress
     MYSQL_PASSWORD: wordpress
   networks:
     - app-network

 wordpress:
   container_name: wordpress
   depends_on:
     - db
   image: wordpress:latest
   restart: always
   environment:
     WORDPRESS_DB_HOST: db:3306
     WORDPRESS_DB_USER: wordpress
     WORDPRESS_DB_PASSWORD: wordpress
     WORDPRESS_DB_NAME: wordpress
   working_dir: /var/www/html/wp
   volumes:
    - wordpress:/var/www/html/wp
   networks:
     - app-network

networks:
 app-network:
   driver: bridge

volumes:
 db_data:
 wordpress:

nginx.conf

events {}
http {
    server {
        listen 80;

        location /wp/ {
            proxy_set_header  Host               $host;
            proxy_set_header  X-Real-IP          $remote_addr;
            proxy_set_header  X-Forwarded-For    $proxy_add_x_forwarded_for;

            proxy_pass http://wordpress;
        }
     }
}

언급URL : https://stackoverflow.com/questions/47724924/nginx-subpath-to-redirect-to-wordpress-docker-container

반응형