请问,ngnix 如何配置,使用(同样的域名)+ (不同后缀)来访问不同的项目?
需求:
使用相同的域名+路径,到达访问不同的laravel项目的目的。
例如:
laravel项目1,放在宿主机/var/www/html/children下;
laravel项目2,放在宿主机/var/www/html/duanwu下。
目标是希望通过:
www.local.com/children 进入laravel项目1;
www.local.com/duanwu 进入laravel项目2;
原来的做法,每个laravel都使用一个二级域名,例如:
laravel项目1,使用children.local.com这个域名访问;laravel项目2,使用duanwu.local.com这个域名访问。
其中的一个虚拟主机配置如下:
server {
listen 80;
server_name children.local.com;
location / {
root /usr/share/nginx/html/children/public;
index index.php index.html index.htm;
try_files $uri $uri/ /index.php?$query_string;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
location ~ \.php$ {
root html;
fastcgi_pass php:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/html/children/public$fastcgi_script_name;
include fastcgi_params;
}
}
这样,访问children.lcoal.com能正常进入项目1,访问duanwu.local.com能正常进入项目2。
系统环境:
CENTOS7+DOCKER
laravel运行环境:
docker分别运行nginx容器,php容器,Mysql容器
目录挂载:
在nginx容器中
将宿主机的/var/www/html挂载到容器的/usr/share/nginx/html下
在php容器中
将宿主机的/var/www/html挂载到容器的/var/www/html下
在Mysql容器中
将宿主机的/var/lib/mysql挂载到容器的/var/lib/mysql下
nginx,php,Mysql的配置文件也放在宿主机上,挂载到各个容器的相关目录。
每个laravel项目都分别从git版本库中克隆不同的项目到/var/www/html下。
使用如下虚拟主机配置,访问www.local.com/children,出现403 Forbidden。
server {
listen 80;
server_name www.local.com;
location / {
root /usr/share/nginx/html/;
index index.php index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
location ^~ /children/ {
alias /usr/share/nginx/html/children/public;
try_files $uri $uri/ @children;
location ~ \.php$ {
root html;
fastcgi_pass php:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/html/children/public$fastcgi_script_name;
include fastcgi_params;
}
}
location @children {
rewrite /children/(.*)$ /children/index.php?/$1 last;
}
}
请问,该如何配置nginx,来满足我们的需求?
这个叫「虚拟目录」,第一次接触是在 IIS,所以知道有这个功能,谷歌了下给你答案,你试试行不。
尝试了,不行!@likunyan
每个 laravel 项目配置成一个单独的站点(不同端口号),然后使用 location 匹配前缀转发。
这个和
fastcgi_param SCRIPT_FILENAME
有关好像, 我之前配置过一个普通项目
和laravel项目
这个是我们多个
SPA
项目需要在同一个域名下的配置, 和一楼的相差不大, 可以参照下;project1开始的配置