2014-04-03 17:04:01
来 源
ITJS.CN
Nginx
本文介绍Nginx服务器中虚拟主机的设置方法,希望对于初学Nginx服务器相关的朋友有帮助,更多Nginx安装、配置、报错处理等资源请本站内搜索。。
Nginx 是一个轻量级高性能的 www 服务器, 并发处理能力强, 对资源消耗小, 无论是静态服务器还是小网站, Nginx 表现更加出色, 作为 Apache 的补充和替代使用率越来越高.

增加 Nginx 虚拟主机

这里假设大家的 Nginx 服务器已经安装好, 不懂的请阅读各 Linux 发行版的官方文档或者 LNMP 的安装说明. 配置 Virtual host 步骤如下:

1. 进入 /usr/local/nginx/conf/vhost 目录, 创建虚拟主机配置文件 www.server110.com.conf ({域名}.conf).

打开配置文件, 添加服务如下:

server {

listen       80;

server_name www.server110.com;

index index.html index.htm index.php;

root  /var/www/www_server110_com;

log_format www.server110.com '$remote_addr - $remote_user [$time_local] $request'

'$status $body_bytes_sent $http_referer '

'$http_user_agent $http_x_forwarded_for';

access_log  /var/log/www.server110.com.log www.server110.com;

}

打开 Nginx 配置文件 /usr/local/nginx/conf/nginx.conf, 在 http 范围引入虚拟主机配置文件如下:

include vhost/*.conf;

重启 Nginx 服务, 执行以下语句.

service nginx restart

让 Nginx 虚拟主机支持 PHP

在前面第 2 步的虚拟主机服务对应的目录加入对 PHP 的支持, 这里使用的是 FastCGI, 修改如下.

server {

listen       80;

server_name www.server110.com;

index index.html index.htm index.php;

root  /var/www/www_server110_com;

location ~ .*.(php|php5)?$ {

fastcgi_pass unix:/tmp/php-cgi.sock;

fastcgi_index index.php;

include fcgi.conf;

}

log_format www.server110.com '$remote_addr - $remote_user [$time_local] $request'

'$status $body_bytes_sent $http_referer '

'$http_user_agent $http_x_forwarded_for';

access_log  /var/log/www.server110.com.log www.server110.com;

}

图片防盗链

图片作为重要的耗流量大的静态资源, 可能网站主并不希望其他网站直接引用, Nginx 可以通过 referer 来防止外站盗链图片.

server {

listen       80;

server_name www.server110.com;

index index.html index.htm index.php;

root  /var/www/www_server110_com;

# 这里为图片添加为期 1 年的过期时间, 并且禁止 Google, 百度和本站之外的网站引用图片

location ~ .*.(ico|jpg|jpeg|png|gif)$ {

expires 1y;

valid_referers none blocked www.server110.com *.google.com *.baidu.com;

if ($invalid_referer) {

return 404;

}

}

log_format www.server110.com '$remote_addr - $remote_user [$time_local] $request'

'$status $body_bytes_sent $http_referer '

'$http_user_agent $http_x_forwarded_for';

access_log  /var/log/www.server110.com.log www.server110.com;

}

WordPress 伪静态配置

如果将 WordPress 的链接结构设定为 /%postname%/, /%postname%.html 等格式时, 需要 rewrite URL, WordPress 提供 Apache 的 .htaccess 修改建议, 但没告知 Nginx 该如何修改. 我们可以将 WordPress 的虚拟主机配置修改如下:

server {

listen       80;

server_name www.server110.com;

index index.html index.htm index.php;

root  /var/www/www_server110_com;

location / {

if (-f $request_filename/index.html){

rewrite (.*) $1/index.html break;

}

if (-f $request_filename/index.php){

rewrite (.*) $1/index.php;

}

if (!-f $request_filename){

rewrite (.*) /index.php;

}

}

rewrite /wp-admin$ $scheme://$host$uri/ permanent;

location ~ .*.(php|php5)?$ {

fastcgi_pass unix:/tmp/php-cgi.sock;

fastcgi_index index.php;

include fcgi.conf;

}

log_format www.server110.com '$remote_addr - $remote_user [$time_local] $request'

'$status $body_bytes_sent $http_referer '

'$http_user_agent $http_x_forwarded_for';

access_log  /var/log/www.server110.com.log www.server110.com;

}

LNMP 套件在提供了 WordPress 为静态配置文件 /usr/local/nginx/conf/wordpress.conf, 在虚拟主机配置的 server 范围引用如下即可.

include wordpress.conf;

如果你使用 LNMP 套件, 进入 WordPress 后台发现会出现 404 页面, wp-admin 后面缺少了斜杆 /, 请在 wordpress.conf 最后添加以下语句:

rewrite /wp-admin$ $scheme://$host$uri/ permanent;

声明: 此文观点不代表本站立场;转载须要保留原文链接;版权疑问请联系我们。