2017-12-18 12 views
0

Nginx 리버스 프록시 서버 뒤에 장고 웹 사이트가 있습니다. WPP를 실행하는 별도의 램프 서버 (PHP-FM 사용)를 만들었으므로 WordPress (WP)로 블로그를 시작하고 싶습니다. 내 웹 사이트에 블로그의 URI가 "SEO/SEO"점수를 유지하기 위해 "mysite/blog"가되도록하고 싶습니다. 그렇게하기 위해, 나는 LAMP 서버의 WP 블로깅 사이트를 가리키는 nginx 가상 서브 디렉토리를 만들었다. 하지만 내 웹 사이트에서 블로그에 연결하려고하면 404 오류가 계속 발생합니다. 아파치 가상 호스트 설정을 수정해야한다고 생각하지만 어떻게해야하는지 알 수 없다. 여기Nginx 가상 디렉터리를 구성하여 Apache 가상 서버에 연결하는 방법은 무엇입니까?

# /etc/nginx/sites-available/mysite.conf 
server { 
    listen 80; 
    server_name web00.mysite.com; 
    return 301 https://$server_name$request_uri; 
} 

server { 
    listen 443 ssl; 
    server_name web00.mysite.com; 
    ... 
    location /blog { 
     proxy_pass https://cms00.mysite.com; 
    } 
} 

내 아파치 설정 파일의 관련 부분은 다음과 같습니다 : 여기

내 Nginx에 설정 파일의 관련 부분입니다 워드 프레스 당신은 WP를에 설치하는 조언 것을

# /etc/apache2/sites-available/vhosts.conf 
DirectoryIndex index.php index.html 

<VirtualHost *:80> 
    ServerName "cms00.mysite.com" 
    Redirect permanent/https://cms00.mysite.com 
</VirtualHost> 

<VirtualHost *:443> 
    ServerName "cms00.mysite.com" 
    DocumentRoot "/var/www/html/mysite.com" 
    ... 
    <Directory "/var/www/html"> 
    AllowOverride All 
    Options -Indexes -Includes +FollowSymLinks 
    Require all granted 
    </Directory> 
    RewriteCond %{HTTP_HOST} !^www\. [NC] 
    RewriteRule ^(.*)$ http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 
</VirtualHost> 

참고하여 웹 사이트의 문서 루트 (내 경우에는 /var/www/html/mysite.com)가 아니라 별도의 하위 디렉토리가 있기 때문에 그렇게했습니다. WP가 문서 루트 아래의 자체 서브 디렉토리에 설치된 경우 많은 WP 플러그인이 작동하지 않습니다.

브라우저에 "cms00.mysite.com/wp-login.php"를 입력하면 Wordpress 사용자 로그인 페이지가 예상대로 표시됩니다. 그러나 "web00.mysites.com/blog"를 입력하면 WP의 "죄송합니다. 해당 페이지를 찾을 수 없습니다."라는 메시지가 나타납니다. 오류. 아파치 로그에 404 오류가 표시됩니다.

... "GET /blog/ HTTP/1.0" 404 ... 

나는 이것이 왜 발생하는지 이해하고 있습니다. 내 요청이 WP 서버에 https ::/cms00.mysite.com/blog로 전달됩니다. 그러나 https://cms00.mysite.com은 모든 WP 파일을 포함하는 문서 루트 /var/www/html/mysite.com을 가리 킵니다. 'blog'하위 디렉토리는 없습니다. 그리고 하나를 만들고 HTML 파일을 넣은 다음 페이지를 새로 고치면 그 파일이 보입니다.

URI를 사용하여 WP 블로그 (예 : https://web00.mysite.com/blog)에 연결할 수 있도록 Nginx 및/또는 Apache를 구성하려면 어떻게해야합니까?

답변

0

이 작업을 수행하려면 세 가지 작업이 필요합니다.

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteCond $1 !^(wp-login\.php) 
RewriteBase /blog/ 
RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /blog/index.php [L] 
</IfModule> 
:

<VirtualHost *:443> 
    ... 
    Alias /blog "/var/www/html/mysite.com" 
    ... 
</VirtualHost> 

다음, 당신은 워드 프레스 루트 디렉토리에 다음의 .htaccess 파일을 추가해야합니다 : 첫 번째는 당신이 WP 서버에 vhosts.conf 파일에 다음 줄을 추가해야한다는 것입니다

마지막으로, 일반 설정으로 이동 https://cms00.mysite.com/wp-admin를 통해 워드 프레스 관리자에 로그인하고 그림과 같이 두 가지 설정이되어 있는지 확인

WordPress Address (URL): https://cms00.mysite.com/blog 
Site Address (URL): https://cms00.mysite.com/blog