我有这个文件夹:/ home / sites / dev / 如果我访问“domain.com”
,Nginx会提供此文件夹的内容但是,假设我在此文件夹中创建了一个文件夹,例如“wp-test”,如果我访问“wp-test.domain.com”,我希望nginx能够提供此文件夹
似乎“ianc”让它在他的blog post上工作,但我无法让它工作。
到目前为止,这是我的配置nginx:
server {
listen 80;
server_name www.ilundev.no;
root /home/sites/dev;
}
server {
listen 80;
server_name ~^(.*)\.ilundev\.no$;
if (!-d /home/sites/dev/ilundev.no/public/$1) {
rewrite . http://www.ilundev.no/ redirect;
}
root /home/sites/dev/$1;
}
server {
listen 80;
server_name ilundev.no;
rewrite ^/(.*) http://www.ilundev.no/$1 permanent;
}
答案 0 :(得分:2)
我做到了! 首先是第一件事。我的配置中出错了。
该行
if (!-d /home/sites/dev/ilundev.no/public/$1) {
错了,应该是
if (!-d /home/sites/dev/$1) {
而且,我必须在我的域名提供商处为我的域设置一个通配符条目。 条目看起来像" * .ilundev.no"我使用了" A"选项 - 它有效!
更新并优化了配置:
只要您的域名提供商的DNS正确设置" * .dev"在您的域的子域中,使用" A"选项 - 以及服务器的IP。
server {
listen 80;
server_name dev.ilun.no www.dev.ilun.no;
root /home/sites/dev;
}
server {
listen 80;
server_name ~^(.*)\.dev.ilun\.no$;
if (!-d /home/sites/dev/$1) {
rewrite . http://dev.ilun.no/ redirect;
}
root /home/sites/dev/$1;
}
然而,现在我一直试图让服务器在这样的子域中运行php代码。
答案 1 :(得分:0)
server {
listen 80;
server_name ~^(?<branch>.*)\.example\.com;
root /var/www/$branch/public;
index index.html index.htm index.php;
charset utf-8;
location / {
try_files $uri $uri/ /index.php$is_args$args;
}
location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; }
error_log /var/log/nginx/$branch.example.com.error.log error;
sendfile off;
client_max_body_size 100m;
location ~ \.php$ {
try_files $uri /index.php =404;
fastcgi_pass php-fpm:9000;
fastcgi_index index.php;
fastcgi_buffers 16 16k;
fastcgi_buffer_size 32k;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.ht {
deny all;
}
}