Linux下Nginx配置虚拟主机VirtualHost实例教程
发布:smiling 来源: PHP粉丝网 添加日期:2015-04-27 16:25:31 浏览: 评论:0
Nginx在Linux系统上运行有轻量、高性能、并发处理能力强、资源消耗小等功能,特别是能表态网站,表现更出色,所以作为了Aapache的补充和替代,使用率越来越高,本文以Linux下配置VirtualHost虚拟主机的实例教程.
增加 Nginx 虚拟主机
这里假设大家的 Nginx 服务器已经安装好,不懂的请阅读各 linux 发行版的官方文档或者 LNMP 的安装说明,配置 Virtual host 步骤如下:
进入 /usr/local/nginx/conf/vhost 目录,创建虚拟主机配置文件 demo.neoease.com.conf ({域名}.conf).
打开配置文件,添加服务如下:
- server {
- listen 80;
- server_name www.phpfensi.com;
- index index.html index.htm index.php;
- root /var/www/www.phpfensi.com;
- log_format www.topjishu.net '$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.phpfensi.com.log www.phpfensi.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.phpfensi.com;
- index index.html index.htm index.php;
- root /var/www/www.phpfensi.com;
- location ~ .*.(php|php5)?$
- {
- fastcgi_pass unix:/tmp/php-cgi.sock;
- fastcgi_index index.php; i
- nclude fcgi.conf;
- }
- log_format www.phpfensi.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.phpfensi.com.log www.phpfensi.com;
- }
图片防盗链:
图片作为重要的耗流量大的静态资源,可能网站主并不希望其他网站直接引用,Nginx 可以通过 referer 来防止外站盗链图片,代码如下:
- server {
- listen 80;
- server_name www.phpfensi.com;
- index index.html index.htm index.php;
- root /var/www/www.phpfensi.com; # 这里为图片添加为期 1 年的过期时间,并且禁止 Google, 百度和本站之外的网站引用图片
- location ~ .*.(ico|jpg|jpeg|png|gif)$
- {
- expires 1y;
- valid_referers none blocked demo.neoease.com *.google.com *.baidu.com;
- if ($invalid_referer) {
- return 404;
- }
- }
- log_format www.topjishu.net '$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.topjishu.net.log www.phpfensi.com;
- }
WordPress 伪静态配置
如果将 WordPress 的链接结构设定为 /%postname%/,/%postname%.html 等格式时,需要 rewrite URL,WordPress 提供 Apache 的 .htaccess 修改建议,但没告知 Nginx 该如何修改,我们可以将 WordPress 的虚拟主机配置修改如下:
- server {
- listen 80;
- server_name www.phpfensi.com;
- index index.html index.htm index.php;
- root /var/www/www.phpfensi.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.phpfensi.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.phpfensi.com.log demo.neoease.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;
相对 Apache,Nignx 有更加强大的并发能力,而因为他对进程管理耗用资源也比较少.而 Apache 比 Nginx 有更多更成熟的可用模块,bug 也比较少.
卖主机的 IDC 选择 Nignx,因为高并发允许他们创建更多虚拟主机空间更来钱;淘宝也因此改造 Nignx(Tengine)作为 CDN 服务器,可承受更大压力.
Tags: Linux虚拟主机 Nginx配置
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)