我希望在发布到生产之前,宿主审查分支以进行暂存、测试并获得反馈。我试图遵循一些在线提供的文档,如NGINX配方(https://www.nginx.com/resources/wiki/start/topics/recipes/wordpress/ ) 没有成功!那么,如何修复它呢?
审查分支的模式是/review-xxxxx
或/review-xx_x-xxx
. 因为我已经设置了部署管道,以触发发布到AWS ECSreview-*
分支,这是我想保密的地方,仅供测试和反馈使用。
我打字很难/review-ci
避免对任何regex模式问题进行故障排除,并保持简单易用。所以,你会发现/review-ci
NGINX Conf文件中的路径,以便明确目标。
我的NGINX conf文件如下所示:
server {
listen 80;
server_name httpwordpress.docker.localhost;
# Logs
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
# Default location settings
location / {
index index.php;
}
location /review-ci {
index index.php;
try_files $uri $uri/ /review-ci/index.php?$args;
}
# Pass the PHP scripts to FastCGI server
location ~ \\.php$ {
fastcgi_split_path_info ^(.+\\.php)(/.+)$;
fastcgi_pass php-fpm:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME
$document_root$fastcgi_script_name;
include fastcgi_params;
}
}
我有活动的烫发链接,我应该能够请求
foobar.com/review-ci/wp-admin
并查看登录屏幕。
当我这样做的时候curl http://httpwordpress.docker.localhost/review-ci/wp-admin
, 我得到:
404 page not found
我也在使用
https://github.com/wp-graphql/wp-graphql
, 也就是说地址
http://httpwordpress.docker.localhost/review-ci/graphql
应该返回一个数据响应,但我得到的是404。
这是在引入regex模式之前的一小步,因为我想将应用程序部署到AWS ECS。我立刻注意到,我原来的设置失败了,我在serverfault(https://serverfault.com/questions/988035/nginx-location-regex-for-prefixed-paths-failure ).
同时,简单地依赖于主机名和根路径(如下面所示)在开发环境中可以很好地工作。但不幸的是,登台可能会有一些并行版本,这些版本具有单独的特性或需求,但尚未准备好发布,并且它是按关注点或“git分支名称”前缀保持独立的review-
如果需要部署并具有staging url
.
server {
listen 80;
server_name httpwordpress.docker.localhost;
root /var/www/html;
index index.php;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
client_max_body_size 200m;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \\.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\\.php)(/.+)$;
fastcgi_pass php-fpm:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
client_max_body_size 200m;
}
}
有人知道如何解决这个问题吗?
感谢您的关注,任何反馈或提示都将不胜感激!
SO网友:punkbit
上面的问题是关于/path-segment
而不是/sub-directory
或在WP社区中通常称为/sub-folder
. 经过多次尝试,我建议不要尝试创建/routes
而是将文件托管在/sub-directory
以简化流程。解决方案如下。
由于我试图做的事情没有映射到www$HOME中的目录,所以很难做到。与大多数示例一样,我们在网上找到了“Wordpress in a subfolder”用例演示,通常的做法是将wp源文件存储在相对于www$HOME的位置。因此,我放弃了创建/路由的想法(请注意,它不是子文件夹,它不会映射到目录,例如,www.foobar.com/review-foobar/wp-admin应该是/var/www/home/
而不是/var/www/home/review-foobar/wp-admin
); 我已经测试并发现可以使用regex和捕获组以及NGINX别名;在那里我可以通过小组wp-admin
将零件分段到alias /var/www/home/wp-admin
而不是NGINXtry_files
或root
指令。也许这在这里有点太难理解,但关键是,最好坚持通常的做法,将文件托管在相对于$HOME路径的子目录中,以避免regex和捕获组、回退等。
常用做法的工作版本为:
server {
listen PORT;
server_name httpwordpress.docker.localhost;
root /var/www/html;
index index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
location /review-staging {
try_files $uri $uri/ /review-staging/index.php?$args;
}
location ~ \\.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\\.php)(/.+)$;
fastcgi_pass FPM_HOSTNAME:9000;
fastcgi_index index.php;
}
}
所以
/review-staging
例如,段是$HOME中的目录
/var/www/html
, WP的源文件位于
/var/www/html/review-staging
. 请记住,这不是我想要的,但似乎是这里的常见做法,有助于减轻设置时的一些痛苦。