模块化 nginx 配置不起作用
modular nginx configuration not working
我在 Unix 套接字上使用 Ubuntu 14.04 + nginx + HHVM。
我有几个项目,所有 运行 都在不同子目录中的同一 IP 下。我一直在尝试使配置模块化,因此当项目发生变化时,只需要进行小的更改。但是,没有一个站点在运行。我得到的是一个没有 HTML 标记的普通“404 未找到文件”页面。 nginx 和 HHVM 的错误日志都没有显示任何内容。
这是我的目录结构:
nginx/
main/
index.php
phpmyadmin/
index.php
laravel/
public/
index.php
以及我的 nginx 配置:
全球
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name localhost;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log info;
charset utf-8;
root /usr/share/nginx;
include /etc/nginx/sites-available/main.conf;
#include /etc/nginx/sites-available/phpmyadmin.conf;
#include /etc/nginx/sites-available/laravel.conf;
include hhvm.conf;
# Deny .htaccess file access
location ~ /\.ht {
deny all;
}
}
main.conf
location / {
root /usr/share/nginx/main;
index index.php;
try_files $uri $uri/ =400;
}
hhvm.conf
location ~ \.(hh|php)$ {
fastcgi_keep_conn on;
# fastcgi_pass 127.0.0.1:9000;
fastcgi_pass unix:/var/run/hhvm/hhvm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
也许最简单的方法是为每个项目创建一个虚拟主机。所以你有一个域(url 中没有文件夹)而且它也是模块化的。
但是如果你想保留你的结构,也许可以使用这个配置:
# For example for your main:
location /main {
root /usr/share/nginx/main;
include hhvm.conf;
index index.php;
try_files $uri $uri/ =400;
}
/main、/phpmyadmin 和 /laravel 需要这些块。
但是,此解决方案的问题可能是 laravel 例如最容易在 laravel.local
这样的域上使用,而不是在 pc.local/laravel
这样的文件夹中使用,因为 url 重写你需要的。
这将是为每个文件夹切换到具有自己域的虚拟主机的另一个原因。子域也是可能的。
这是我更新的配置文件,所以它可以工作(Laravel 仍在进行中,只有主页在工作,这很痛苦):
PKeidel 的回答被接受,因为他启发了我做这个。谢谢!
主要
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name localhost;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log debug;
charset utf-8;
include sites-available/main.conf;
include sites-available/phpmyadmin.conf;
include sites-available/laravel.conf;
# Deny .htaccess file access
location ~ /\.ht {
deny all;
}
}
main.conf
location ^~ / {
root /usr/share/nginx/yoyo;
include php-template;
try_files $uri $uri/ =404;
}
phpmyadmin.conf
location ^~ /pma {
root /usr/share/nginx;
include php-template;
try_files $uri $uri/ index.php?$query_string;
}
php-模板
index index.php;
include hhvm.conf;
我在 Unix 套接字上使用 Ubuntu 14.04 + nginx + HHVM。
我有几个项目,所有 运行 都在不同子目录中的同一 IP 下。我一直在尝试使配置模块化,因此当项目发生变化时,只需要进行小的更改。但是,没有一个站点在运行。我得到的是一个没有 HTML 标记的普通“404 未找到文件”页面。 nginx 和 HHVM 的错误日志都没有显示任何内容。
这是我的目录结构:
nginx/
main/
index.php
phpmyadmin/
index.php
laravel/
public/
index.php
以及我的 nginx 配置:
全球
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name localhost;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log info;
charset utf-8;
root /usr/share/nginx;
include /etc/nginx/sites-available/main.conf;
#include /etc/nginx/sites-available/phpmyadmin.conf;
#include /etc/nginx/sites-available/laravel.conf;
include hhvm.conf;
# Deny .htaccess file access
location ~ /\.ht {
deny all;
}
}
main.conf
location / {
root /usr/share/nginx/main;
index index.php;
try_files $uri $uri/ =400;
}
hhvm.conf
location ~ \.(hh|php)$ {
fastcgi_keep_conn on;
# fastcgi_pass 127.0.0.1:9000;
fastcgi_pass unix:/var/run/hhvm/hhvm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
也许最简单的方法是为每个项目创建一个虚拟主机。所以你有一个域(url 中没有文件夹)而且它也是模块化的。
但是如果你想保留你的结构,也许可以使用这个配置:
# For example for your main:
location /main {
root /usr/share/nginx/main;
include hhvm.conf;
index index.php;
try_files $uri $uri/ =400;
}
/main、/phpmyadmin 和 /laravel 需要这些块。
但是,此解决方案的问题可能是 laravel 例如最容易在 laravel.local
这样的域上使用,而不是在 pc.local/laravel
这样的文件夹中使用,因为 url 重写你需要的。
这将是为每个文件夹切换到具有自己域的虚拟主机的另一个原因。子域也是可能的。
这是我更新的配置文件,所以它可以工作(Laravel 仍在进行中,只有主页在工作,这很痛苦):
PKeidel 的回答被接受,因为他启发了我做这个。谢谢!
主要
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name localhost;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log debug;
charset utf-8;
include sites-available/main.conf;
include sites-available/phpmyadmin.conf;
include sites-available/laravel.conf;
# Deny .htaccess file access
location ~ /\.ht {
deny all;
}
}
main.conf
location ^~ / {
root /usr/share/nginx/yoyo;
include php-template;
try_files $uri $uri/ =404;
}
phpmyadmin.conf
location ^~ /pma {
root /usr/share/nginx;
include php-template;
try_files $uri $uri/ index.php?$query_string;
}
php-模板
index index.php;
include hhvm.conf;