在 Nginx 服务器上创建虚拟主机
Create Virtual Host on Nginx Server
最近我一直在使用 LAMP,但是现在,我开始使用 nginx。所以,我安装了nginx,想创建虚拟主机,由于LAMP的文件夹结构与独立的nginx文件夹结构不同,无法理解如何创建虚拟主机。
我访问过几个链接,例如:
- Tutorial 1, Tutorial 2 - 没有用,因为它用于独立的 nginx
有1 Question on SO,也是和我的情况有点相似,但是没有回答。
默认 nginx 配置包含这些行以检查启用站点的目录:
http {
# ...
##
# Virtual Host Configs
##
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
我认为您可以编辑 bitnami 在 /opt/bitnami/nginx/conf/nginx.conf
提供的配置以添加这些路径(或任何其他路径)并按照通常的教程进行操作。
在您的项目目录中定义一个文件,例如vhost.conf
编写以下代码:
server {
listen 8080;
root "your_project_directory";
server_name your_host_name;
index index.php;
allow 127.0.0.1;
deny all;
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_read_timeout 300;
fastcgi_pass unix:/**your_bitnami_install_directory**/php/var/run/www.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $request_filename;
include fastcgi_params;
}
}
将此文件包含在:your_bitnami_install_directory/nginx/conf/bitnami/bitnami-apps-vhosts.conf
include "your_project_directory/vhost.conf";
重启nginx
Apache Virtual Host [/etc/apache2/sites-available/000-default.conf]
<VirtualHost *:8080>
ServerName abc.dev
DocumentRoot "/home/gauravdave01/Development/project001/source/public"
<Directory /home/gauravdave01/Development/project001/source/public>
DirectoryIndex index.php
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
<VirtualHost *:8080>
ServerName mno.dev
DocumentRoot "/home/gauravdave01/Development/project002/source/public"
<Directory /home/gauravdave01/Development/project002/source/public>
DirectoryIndex index.php
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
Nginx Virtual Host [/etc/nginx/sites-available/default]
server {
listen 80 default_server;
root /usr/share/nginx/example.com;
index index.php index.html index.htm;
server_name example.com www.example.com;
location / {
try_files $uri $uri/ /index.php;
}
location ~ \.php$ {
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
include snippets/fastcgi-php.conf;
}
}
server {
root /home/gauravdave01/Development/sample.org;
index index.php index.html index.htm;
server_name sample.org www.sample.org;
location / {
try_files $uri $uri/ /index.php;
}
location ~ \.php$ {
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
include snippets/fastcgi-php.conf;
}
}
更新所有站点信息后,您需要使用 sudo ln -s /etc/nginx/sites-available/default /etc/nginx/sites-enabled/
创建一个符号 link 到 sites-enabled 然后,重新加载您的 nginx 使用: sudo service nginx restart
不要忘记在主机 [/etc/hosts] 文件中添加新创建的站点地址。
如果您在尝试执行 .php 文件时遇到 "File Not Found." 错误,则意味着您需要更改 php 的用户和组- fpm [/etc/php/7.0/fpm/pool.d/www.conf]文件到你当前用户,然后重启php-fpm使用:sudo /etc/init.d/php7.0-fpm restart
File References:
- Nginx 配置: /etc/nginx/nginx.conf
- Nginx 错误日志: /var/log/nginx/error.log
最近我一直在使用 LAMP,但是现在,我开始使用 nginx。所以,我安装了nginx,想创建虚拟主机,由于LAMP的文件夹结构与独立的nginx文件夹结构不同,无法理解如何创建虚拟主机。
我访问过几个链接,例如:
- Tutorial 1, Tutorial 2 - 没有用,因为它用于独立的 nginx
有1 Question on SO,也是和我的情况有点相似,但是没有回答。
默认 nginx 配置包含这些行以检查启用站点的目录:
http {
# ...
##
# Virtual Host Configs
##
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
我认为您可以编辑 bitnami 在 /opt/bitnami/nginx/conf/nginx.conf
提供的配置以添加这些路径(或任何其他路径)并按照通常的教程进行操作。
在您的项目目录中定义一个文件,例如vhost.conf 编写以下代码:
server {
listen 8080;
root "your_project_directory";
server_name your_host_name;
index index.php;
allow 127.0.0.1;
deny all;
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_read_timeout 300;
fastcgi_pass unix:/**your_bitnami_install_directory**/php/var/run/www.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $request_filename;
include fastcgi_params;
}
}
将此文件包含在:your_bitnami_install_directory/nginx/conf/bitnami/bitnami-apps-vhosts.conf
include "your_project_directory/vhost.conf";
重启nginx
Apache Virtual Host [/etc/apache2/sites-available/000-default.conf]
<VirtualHost *:8080>
ServerName abc.dev
DocumentRoot "/home/gauravdave01/Development/project001/source/public"
<Directory /home/gauravdave01/Development/project001/source/public>
DirectoryIndex index.php
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
<VirtualHost *:8080>
ServerName mno.dev
DocumentRoot "/home/gauravdave01/Development/project002/source/public"
<Directory /home/gauravdave01/Development/project002/source/public>
DirectoryIndex index.php
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
Nginx Virtual Host [/etc/nginx/sites-available/default]
server {
listen 80 default_server;
root /usr/share/nginx/example.com;
index index.php index.html index.htm;
server_name example.com www.example.com;
location / {
try_files $uri $uri/ /index.php;
}
location ~ \.php$ {
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
include snippets/fastcgi-php.conf;
}
}
server {
root /home/gauravdave01/Development/sample.org;
index index.php index.html index.htm;
server_name sample.org www.sample.org;
location / {
try_files $uri $uri/ /index.php;
}
location ~ \.php$ {
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
include snippets/fastcgi-php.conf;
}
}
更新所有站点信息后,您需要使用 sudo ln -s /etc/nginx/sites-available/default /etc/nginx/sites-enabled/
创建一个符号 link 到 sites-enabled 然后,重新加载您的 nginx 使用: sudo service nginx restart
不要忘记在主机 [/etc/hosts] 文件中添加新创建的站点地址。
如果您在尝试执行 .php 文件时遇到 "File Not Found." 错误,则意味着您需要更改 php 的用户和组- fpm [/etc/php/7.0/fpm/pool.d/www.conf]文件到你当前用户,然后重启php-fpm使用:sudo /etc/init.d/php7.0-fpm restart
File References:
- Nginx 配置: /etc/nginx/nginx.conf
- Nginx 错误日志: /var/log/nginx/error.log