2016-09-24 2 views
1

웹 사이트가있어서 '/ blog'아래에 다른 단어로 호스팅 된 블로그를 호스팅하고 싶습니다. 나는 아래 구성의 nginx 프록시를 사용하고는nginx를 사용하여 '/ blog'를 다른 인스턴스에서 호스팅되는 WordPress 웹 사이트로 리디렉션합니다.

location ^~ /blog 
    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-NginX-Proxy  true; 
    proxy_set_header X-Forwarded-Proto $scheme; 
    proxy_http_version 1.1; 
    proxy_pass   11.111.11.111 
    proxy_redirect  off; 
    } 

또한 수정 한 워드 프레스 설정 -> 일반

워드 프레스 주소 (URL) - http://mywebsite.com/blog

사이트 주소 (URL) - http://mywebsite.com/blog

'/ blog'는 css 및 js를로드 할 수 없으므로 완전히 기능하지 않습니다.

누구든지이 작업을 수행하는 방법을 알고 있습니다. 이 문제에 대한 많은 게시물을 읽었지만 아무도 내 문제를 해결하지 못했습니다. 감사합니다. .

+0

블로그가 다른 인스턴스의 루트에 호스팅되어 있습니까? –

+0

예, 다른 인스턴스의 루트에 호스트 됨 –

답변

2

공용 URI /blog에서 업스트림 URI /으로의 매핑이 누락 된 것 같습니다.

locationproxy_pass 지정 문을 사용하여 proxy_pass 문에 URI를 추가하여이 기능을 수행 할 수 있습니다. 자세한 내용은 this document을 참조하십시오. 예를 들어 :

location ^~ /blog/ { 
    proxy_pass http://192.0.2.0/; 
} 

전체 구성에 따라, 위에서 제대로 전달되지 (A는 / 후행하지 않고 IE)의 URL //example.com/blog을 방지 할 수있는 경우 중 하나 (1)를 처리 할 수있는 특정 위치의 블록을 추가 단일 케이스 또는 (2) 위의 위치 블록에 rewrite ... break을 추가하십시오. (상기 추가)

옵션 (1) 예 :

location = /blog { rewrite^/blog/ last; } 

옵션 (2) 예를 들어이 두 번째 옵션에서

location ^~ /blog { 
    rewrite ^/blog(?:/(.*))?$ /$1 break; 
    proxy_pass http://192.0.2.0; 
} 

는 에일리어싱 함수는 rewrite 문으로 이동 proxy_pass에는 추가 된 URI가 없습니다. 자세한 내용은 this document을 참조하십시오.

+0

@RichardSmith 님의 답변이 늦어서 죄송합니다. 두 번째 방법을 시도했지만 제대로 작동하지 않습니다. 내부 링크 중 일부가 제대로 작동하지 않습니다. 1) **/wp-admin/post.php ** : _redirecting_을 게시하는 대신 **/wp-admin/edit .php ** 2) 또한 ** wp-admin/edit-tags.php? taxonomy = category ** : **/wp-admin/edit-tags.php ** _redirecting_ ** 이유를 모르겠 음 그 리디렉션을 일으키는? –

관련 문제