【问题标题】:Nginx - wordpress config alongside page with apiNginx - 带有 api 的页面旁边的 wordpress 配置
【发布时间】:2020-01-31 15:00:32
【问题描述】:

我在 Nginx 上有一些带有页面和 API 的网站。 html页面的位置是

var/www/mysite/mysite_rest

并且api的位置是

var/www/mysite/mysite_rest/api

下一个配置对我来说很好:

server {
listen 80;
server_name example.com;
#    return 301 https://$host$request_uri;
return 301 https://example.com;
rewrite ^ https://example.com$request_uri? permanent;

client_max_body_size 350M;
}

server {
listen 443 ssl http2;
server_name example.com;

charset UTF-8;

# certs sent to the client in SERVER HELLO are concatenated in 
ssl_certificate
ssl_certificate /etc/ssl/example.crt;
ssl_certificate_key /etc/ssl/example.key;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 30m;
keepalive_timeout 70;
ssl_session_tickets off;

ssl_dhparam /etc/ssl/dhparam.pem;

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers off;

# ssl_stapling on;
ssl_trusted_certificate /etc/ssl/example.crt;
# resolver 8.8.8.8;

# HSTS (ngx_http_headers_module is required) (63072000 seconds)
add_header Strict-Transport-Security "max-age=63072000" always;
# add_header Strict-Transport-Security max-age=31536000 always;
add_header X-Frame-Options DENY;
# add_header Public-Key-Pins 'pin-sha256="base64+info1="; max-age=31536000' 
always;

add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";

##
rewrite ^/(.*)/$ /$1 permanent;
rewrite ^/api/(.*)$ /api/index.php?_url=/$1 last;
rewrite ^/api$ /api/index.php?_url=/ last;

##

location / {
root /var/www/mysite/mysite_rest;
charset utf-8;
index index.php index.html;
}

location /api {
        internal;
        root /var/www/mysite/mysite_rest/api;
        index index.php;
        include /etc/nginx/fastcgi_params;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
 #            fastcgi_pass unix:/var/run/php7.1-fpm.sock;
        fastcgi_pass 127.0.0.1:9000;
         #    fastcgi_param SCRIPT_FILENAME $document_root/index.php;
       fastcgi_param SCRIPT_FILENAME /var/www/mysite/mysite_rest/api/index.php;
   fastcgi_param SCRIPT_NAME index.php;
        fastcgi_param HTTPS on;
#        fastcgi_param HTTP_HTTPS on;
    fastcgi_param REQUEST_SCHEME https;
    fastcgi_param SERVER_PORT 443;

   }         
}

现在我需要在我的网站旁边安装 wordpress,我下载了它并放置在

var/www/mysite/wp

文件夹,然后添加到Nginx conf的下一行:

    location /wp {
        internal;
        root /var/www/mysite/wp;
        index index.php;
        include /etc/nginx/fastcgi_params;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
#            fastcgi_pass unix:/var/run/php7.1-fpm.sock;
        fastcgi_pass 127.0.0.1:9000;
        #    fastcgi_param SCRIPT_FILENAME $document_root/index.php;
       fastcgi_param SCRIPT_FILENAME /var/www/mysite/wp/index.php;
   fastcgi_param SCRIPT_NAME index.php;
#            fastcgi_param HTTPS on;
    fastcgi_param HTTP_HTTPS on;
    fastcgi_param REQUEST_SCHEME https;
    fastcgi_param SERVER_PORT 443;
} 

请求url:example.com/wp的结果是404,我做错了什么?

UPD1 删除“内部”时,请求重写https://example.comindex.php/wp-admin/install.php

UPD2 为 wordpressp 位置添加下一行而不是上一行:

location ^~ /wp {
root /var/www/mysite/mysite_rest;
index index.php index.html index.htm;
try_files $uri $uri/ /wp/index.php;

location ~ \.php {
fastcgi_split_path_info ^(.*\.php)(.*)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
fastcgi_pass 127.0.0.1:9000;
}

这允许我运行安装,但是当我请求 example.com/wp 时,它会导致 ERR_TOO_MANY_REDIRECTS 。我可以通过手动请求访问/wp-login.php。

【问题讨论】:

  • 你使用了internal指令。
  • @RichardSmith 什么UPD,拜托

标签: php wordpress nginx


【解决方案1】:

您使用了internal 指令来阻止外部访问locationroot 指令错误,您无法加载 WordPress 静态文件。

你可以试试这样的:

location ^~ /wp {
    root /var/www/mysite;
    index index.php;

    try_files $uri $uri/ /wp/index.php;

    location ~ \.php$ {        
        include /etc/nginx/fastcgi_params;
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_param SCRIPT_FILENAME $request_filename;
    }
}

不要忘记使用正确的 URL 配置 WordPress。详情请见this document

【讨论】:

  • 我的问题有一些更新,你有什么想法吗?
猜你喜欢
  • 2014-08-01
  • 2013-02-23
  • 2018-03-04
  • 2015-08-11
  • 1970-01-01
  • 2017-07-21
  • 2021-12-02
  • 1970-01-01
  • 2021-12-18
相关资源
最近更新 更多