可以通过文件夹而不是端口访问多个基于 laravel 的站点吗?
Posted
技术标签:
【中文标题】可以通过文件夹而不是端口访问多个基于 laravel 的站点吗?【英文标题】:Can multi laravel based sites be accessed by folder not by port? 【发布时间】:2014-03-27 00:38:38 【问题描述】:现在,我有两个基于 Laravel + php + mysql + nginx 的项目(站点),访问者可以通过输入访问它们:
http://www.mysite.com:80 http://www.mysite.com:8001
可以不通过端口将访问方式改为虚拟文件夹吗?
http://www.mysite.com/project1 http://www.mysite.com/project2
nginx conf 文件位于(位于 /etc/nginx/conf.d/):
project1.conf
服务器 听 *:80; server_name mysite.com www.mysite.com; server_tokens 关闭; 根 /var/www/html/project1/public; client_max_body_size 100m; access_log /var/log/nginx/project1_access.log; 错误日志/var/log/nginx/project1_error.log; 地点 / 索引 index.php 索引.html; if (!-f $request_filename)
rewrite (.*) /index.php;
location ~ \.php$
include /etc/nginx/fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
project2.conf
服务器 听 *:80; server_name www.mysite.com; server_tokens 关闭; 根 /var/www/html/project2/public; client_max_body_size 100m; access_log /var/log/nginx/project2_access.log; 错误日志/var/log/nginx/project2_error.log;location /
index index.php index.html;
if (!-f $request_filename)
rewrite (.*) /index.php;
location ~ \.php$
include /etc/nginx/fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
【问题讨论】:
【参考方案1】:唯一体面的方法是通过文件夹和虚拟主机而不是端口。
【讨论】:
【参考方案2】:当然 - 示例配置如下所示:
1 定义您的应用服务器
server
listen 8080;
root /var/www/html/project1/public;
......
server
listen 8081;
root /var/www/html/project2/public;
......
2 定义您的代理服务器
server
listen 80;
server_name mysite.com www.mysite.com;
.....
location /project1
proxy_pass http://localhost:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
.....
location /project2
proxy_pass http://localhost:8081;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
....
【讨论】:
以上是关于可以通过文件夹而不是端口访问多个基于 laravel 的站点吗?的主要内容,如果未能解决你的问题,请参考以下文章
如何在端口而不是 htdocs 文件夹中运行 PHP 应用程序?