我有两个应用程序想要在 nginx 中的一个域下同时提供服务。
文件夹结构
/var/www/phm
/client
/static
/css
main.css
index.html
/server
/public
/img
intro.png
nginx.conf
server_name phm.example.com;
root /var/www/phm;
index index.html index.php;
location / {
try_files $uri /client/$uri @server;
}
location @server {
try_files /server/public/$uri /server/public/index.php$is_args$args =404;
}
location ~ \.php {
fastcgi_split_path_info ^/(.+\.php)(.*)$;
include fastcgi.conf;
internal;
}
我的期望是,以下请求将得到相应文件的答复
- phm.example.com ---> /var/www/phm/client/index.html
- phm.example.com/static/css/main.css ---> /var/www/phm/client/static/css/main.css
- phm.example.com/img/intro.png ---> /var/www/phm/server/public/img/intro.png
答案1
我会尝试这样的配置:
server_name phm.example.com;
root /var/www/phm/client;
index index.html index.php;
location / {
try_files $uri =404;
}
location /img {
root /var/www/phm/server/public;
try_files $uri /index.php$is_args$args;
}
location ~ \.php {
fastcgi_split_path_info ^/(.+\.php)(.*)$;
include fastcgi.conf;
}
在此配置中,默认从/var/www/phm/client
目录提供文件。对于location /img
,根目录更改为/var/www/phm/server/public
。
此配置将用于http://phm.example.com/img/intro.png从/var/www/phm/server/public/img/intro.png
。