我已经在Nginx上建立了我的主要WordPress网站,并且/ demos /子目录具有多站点网络。
site.com [主站点]
site.com/demos/ [多站点]
site.com/demos/theme1 [子站点]
site.com/demos/theme2 [子站点]
nginx已配置好并且可以在主站点上正常工作,但对于多站点,它将返回404。
多站点可以与子域配置一起使用。有没有一种方法可以使它与子目录一起工作?
答案 0 :(得分:0)
您应该查看Trellis,它允许您配置多站点和多租户WordPress站点,并且它使用简单的配置文件为您配置Nginx。唯一的问题是它基于子域,因此您需要对生成的配置进行一些修改。
这是我的建议
Nginx支持location
内的多个server{}
块配置,这可能正是您要寻找的。 p>
# This block redirects all request from HTTP to HTTPS without losing any arguments or parameters
server {
listen 80;
server_name site.com;
# root /var/www/html;
return 301 https://$server_name$request_uri;
location / {
return 301 https://$server_name$request_uri;
}
}
server {
listen 443 ssl;
server_name site.com;
location /demos/theme1/ {
root /var/www/html/demos/theme1;
client_max_body_size 100M;
}
location /demos/theme2/ {
root /var/www/html/demos/theme2;
client_max_body_size 100M;
}
# listen 443 ssl; # managed by Certbot
ssl_certificate /path/to/fullchain.pem;
ssl_certificate_key /path/to/privkey.pem;
ssl_session_cache shared:le_nginx_SSL:1m;
ssl_session_timeout 1440m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers "ECDHE-ECDSA-AES128-GCM-SHA256 ECDHE-ECDSA-AES256-GCM-SHA384 ECDHE-ECDSA-AES128-SHA ECDHE-ECDSA-AES256-SHA ECDHE-ECDSA-AES128-SHA256 ECDHE-ECDSA-AES256-SHA384 ECDHE-RSA-AES128-GCM-SHA256 ECDHE-RSA-AES256-GCM-SHA384 ECDHE-RSA-AES128-SHA ECDHE-RSA-AES128-SHA256 ECDHE-RSA-AES256-SHA384 DHE-RSA-AES128-GCM-SHA256 DHE-RSA-AES256-GCM-SHA384 DHE-RSA-AES128-SHA DHE-RSA-AES256-SHA DHE-RSA-AES128-SHA256 DHE-RSA-AES256-SHA256 EDH-RSA-DES-CBC3-SHA";
}
然后将其保存到.conf
中扩展名为/etc/nginx/sites-available/site.conf
(/etc/nginx/sites-availabe/
)的文件中,并按照Nginx的建议在/etc/nginx/sites-enabled/
文件夹中创建指向该文件的符号链接。但是您可以将文件直接放置在/etc/nginx/sites-enabled/
文件夹中,而无需使用符号链接。
您应该在每个域(多站点)中使用一个文件,以便更容易地修正错误,因为一个错误的配置文件可能会用500 - Internal server error
或502 - Bad Gateway
删除Nginx
这是针对您的方案的解决方法,但确实很麻烦,因此建议使用源代码控制。
如果多站点具有自己的域,则应在各自的配置文件中配置每个多站点。