2016-11-17 1 views
0

nginx를 사용하는 동안 WordPress의 퍼머 링크에 문제가 있습니다. 나는 나의의 nginx의 설정 파일에 다음 줄을 추가하려고했지만, 여전히 나는이 영구 링크가 작동 얻기에 드릴 수 없습니다 : 나는 워드 프레스 제어판에서 고정 링크를 사용할 때Nginx 1.10 및 WordPress 3.6.1 영구 링크 문제

location/{ 
try_files $uri $uri/ /en/index.php?$args; 
} 

내가, 404 오류를 얻고있다.

내 nginx conf 파일은 웹에서 거의 모든 것을 시도 했으므로이 문제를 조사하는 데 도움이 될 수 있다면 여기에 있습니다. 내 설정에 뭔가 생각을 엉망으로되어

server { 

     server_name blog.domain.com www.blog.domain.com; 

     listen 161.122.20.14; 

     return 301 https://$server_name$request_uri; 
       ssl_certificate /home/domain/domains/blog.domain.com/ssl.cert; 
       ssl_certificate_key /home/domain/domains/blog.domain.com/ssl.key; 
     } 

     server { 
       server_name blog.domain.com www.blog.domain.com; 

       listen 161.122.20.14:443 ssl http2; 

       root /home/domain/domains/blog.domain.com/public_html; 

       index index.html index.htm index.php; 

       access_log /var/log/virtualmin/blog.domain.com_access_log; 
       error_log /var/log/virtualmin/blog.domain.com_error_log; 

     fastcgi_param GATEWAY_INTERFACE CGI/1.1; 
       fastcgi_param SERVER_SOFTWARE nginx; 
       fastcgi_param QUERY_STRING $query_string; 
       fastcgi_param REQUEST_METHOD $request_method; 
       fastcgi_param CONTENT_TYPE $content_type; 
       fastcgi_param CONTENT_LENGTH $content_length; 
       fastcgi_param SCRIPT_FILENAME /home/domain/domains/blog.domain.com/public_html$fastcgi_script_name; 
       fastcgi_param SCRIPT_NAME $fastcgi_script_name; 
       fastcgi_param REQUEST_URI $request_uri; 
       fastcgi_param DOCUMENT_URI $document_uri; 
       fastcgi_param DOCUMENT_ROOT /home/domain/domains/blog.domain.com/public_html; 
       fastcgi_param SERVER_PROTOCOL $server_protocol; 
       fastcgi_param REMOTE_ADDR $remote_addr; 
       fastcgi_param REMOTE_PORT $remote_port; 
       fastcgi_param SERVER_ADDR $server_addr; 
       fastcgi_param SERVER_PORT $server_port; 
       fastcgi_param SERVER_NAME $server_name; 
       fastcgi_param HTTPS $https; 

       location ~ \.php$ { 
         try_files $uri =404; 
         fastcgi_pass unix:/var/php-nginx/14765596504348.sock/socket; 
       } 

       location = /favicon.ico { 
       log_not_found off; 
       access_log off; 
       } 

       location = /robots.txt { 
       allow all; 
       log_not_found off; 
       access_log off; 
       } 

     location ~* .(js|css|png|jpg|jpeg|gif|ico)$ { 
       access_log  off; 
       log_not_found  off; 
       expires 365d; 
       } 

       location ~* /(?:uploads|files)/.*\.php$ { 
       deny all; 
       } 

       location ~* \.(engine|inc|info|install|make|module|profile|test|po|sh|.*sql|theme|tpl(\.php)?|xtmpl)$|^(\..*|Entries.*|Repository|Root|Tag|Template)$|\.php_ { 
       return 444; 
       } 

       location ~* \.(pl|cgi|py|sh|lua)\$ { 
       return 444; 
       } 

       location ~ /(\.|wp-config\.php|readme\.html|license\.txt) { deny all; } 

     ssl_certificate /home/domain/domains/blog.domain.com/ssl.cert; 
       ssl_certificate_key /home/domain/domains/blog.domain.com/ssl.key; 
       ssl_trusted_certificate /home/domain/domains/blog.domain.com/ssl.ca; 
       ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 
       ssl_prefer_server_ciphers on; 
       ssl_dhparam /etc/nginx/dhparam.pem; 
       ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA'; 

       add_header Accept-Ranges bytes; 
       add_header X-Frame-Options "SAMEORIGIN" always; 
       add_header X-Content-Type-Options "nosniff" always; 
       add_header X-XSS-Protection "1; mode=block" always; 
       add_header Strict-Transport-Security "max-age=15768000" always; 
       add_header Public-Key-Pins 'pin-sha256="Niasdcu1LQAzCK234v6aJLcwJFCcWATc4asdIBhio7XpIQ="; pin-sha256="75h33riR+PAtOJcVKNfn2y1/N1ARLqJ213YDX5bnAi1Q="; max-age=2592000;'; 
     } 

답변

3

이의 당신의 리디렉션 서버 블록 보자 ... 워드 프레스 때문에 허용 것 또는 WWW 및 루트 도메인을 모두 사용한다는 사실처럼되지 웹 사이트 URL을 선택해야합니다. 의 당신은 www가 원하지 않는 가정 도메인 자체를 사용할 수 있도록, 당신의 리디렉션 서버 블록은 다음과 같을 것이다 :

server { 
    listen 161.122.20.14; 
    server_name blog.domain.com www.blog.domain.com; 
    return 301 https://blog.domain.com$request_uri; 
} 

이 효과적으로 주어진 IP에서 수신 할 포트 80을 모두 블로그 .domain.com 및 www.blog.domain.com으로 리디렉션합니다. https://blog.domain.com

첫 번째로을 말한 이유는 무엇입니까? www 도메인에서 모든 https를 수신 할 수있는 다른 리디렉션 서버 블록이 필요할 수 있기 때문입니다. 이 경우 서버 블록에 유효한 ssl config가 설정되어 있는지 확인해야합니다. 더 조사하고 만 설정 프론트 복용하지 않으면, 당신의 SSL 리디렉션은 다음과 같이 보일 것이다 :

server { 
    listen 161.122.20.14:443 ssl http2; 
    server_name www.blog.domain.com; 

    ssl_certificate /home/domain/domains/blog.domain.com/ssl.cert; 
    ssl_certificate_key /home/domain/domains/blog.domain.com/ssl.key; 
    ssl_trusted_certificate /home/domain/domains/blog.domain.com/ssl.ca; 

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 
    ssl_prefer_server_ciphers on; 
    ssl_dhparam /etc/nginx/dhparam.pem; 
    ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA'; 

    return 301 https://blog.domain.com$request_uri; 
} 

을 지금 우리는 모든 요청 중 하나 인 blog.domain.com 또는 www.blog.domain.com있는 것을 확신하는 것을 포트 80 및 443 모두, 재로까지 알아서, 우리의 주요 서버 블록과 같이 보일 것이다 : 여기

server { 
    listen 161.122.20.14:443 ssl http2 deferred; 
    server_name blog.domain.com; 

    root /home/domain/domains/blog.domain.com/public_html; 
    index index.html index.htm index.php; 

    access_log /var/log/virtualmin/blog.domain.com_access_log; 
    error_log /var/log/virtualmin/blog.domain.com_error_log; 

    ssl_certificate /home/domain/domains/blog.domain.com/ssl.cert; 
    ssl_certificate_key /home/domain/domains/blog.domain.com/ssl.key; 
    ssl_trusted_certificate /home/domain/domains/blog.domain.com/ssl.ca; 
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 
    ssl_prefer_server_ciphers on; 
    ssl_dhparam /etc/nginx/dhparam.pem; 
    ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA'; 

    add_header Accept-Ranges bytes; 
    add_header X-Frame-Options "SAMEORIGIN" always; 
    add_header X-Content-Type-Options "nosniff" always; 
    add_header X-XSS-Protection "1; mode=block" always; 
    add_header Strict-Transport-Security "max-age=15768000" always; 
    add_header Public-Key-Pins 'pin-sha256="Niasdcu1LQAzCK234v6aJLcwJFCcWATc4asdIBhio7XpIQ="; pin-sha256="75h33riR+PAtOJcVKNfn2y1/N1ARLqJ213YDX5bnAi1Q="; max-age=2592000;'; 

    location = /favicon.ico { 
     log_not_found off; 
     access_log off; 
    } 

    location = /robots.txt { 
     allow all; 
     log_not_found off; 
     access_log off; 
    } 

    location ~* .(js|css|png|jpg|jpeg|gif|ico)$ { 
     access_log  off; 
     log_not_found  off; 
     expires 365d; 
    } 

    location ~* /(?:uploads|files)/.*\.php$ { 
     deny all; 
    } 

    location ~* \.(engine|inc|info|install|make|module|profile|test|po|sh|.*sql|theme|tpl(\.php)?|xtmpl)$|^(\..*|Entries.*|Repository|Root|Tag|Template)$|\.php_ { 
     return 444; 
    } 

    location ~* \.(pl|cgi|py|sh|lua)\$ { 
     return 444; 
    } 

    location ~ /(\.|wp-config\.php|readme\.html|license\.txt) { deny all; } 

    location/{ 
     try_files $uri $uri/ /index.php?q=$uri&$args; 
    } 

    location ~ [^/]\.php(/|$) { 
     fastcgi_split_path_info ^(.+?\.php)(/.*)$; 
     if (!-f $document_root$fastcgi_script_name) { 
      return 404; 
     } 
     include fastcgi_params; 
     fastcgi_index index.php; 
     fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
     fastcgi_pass unix:/var/php-nginx/14765596504348.sock/socket; 
    } 
} 

키가 try_files과 기본 동작을 포함하는/위치 블록을 추가합니다. 당신은 또한 PHP 위치 블록을 저장하고 미래의 구성을 위해 그것을 사용해야합니다 ... 다른 하나는, 말하기, 안전하지 않은 것입니다. 사실, 본질적으로 당신이 퍼머 링크를 워드 프레스과 함께 사용할 수 있도록 허용 할 것입니다. 당신은 당신이 그런 정보를 얻을 않은 곳 .. 당신의 설정에있는 모든하여 FastCGI PARAMS을 넣어 생각이있어 어디도

location/{ 
     try_files $uri $uri/ /index.php?q=$uri&$args; 
    } 

    location ~ [^/]\.php(/|$) { 
     fastcgi_split_path_info ^(.+?\.php)(/.*)$; 
     if (!-f $document_root$fastcgi_script_name) { 
      return 404; 
     } 
     include fastcgi_params; 
     fastcgi_index index.php; 
     fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
     fastcgi_pass unix:/var/php-nginx/14765596504348.sock/socket; 
    } 

을 궁금하네요?

모든 것이 유효한지 확인하지 않고 게시 한 내용에서 복사/붙여 넣기를 했으므로주의해야합니다.