Linux下Nginx配置虚拟主机VirtualHost实例教程

爱互踩 爱互踩流量交换~

Nginx在Linux系统上运行有轻量、高性能、并发处理能力强、资源消耗小等功能,特别是能表态网站,表现更出色,所以作为了Aapache的补充和替代,使用率越来越高,本文以Linux下配置VirtualHost虚拟主机的实例教程.

增加 Nginx 虚拟主机

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

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

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

  1. server{
  2. listen80;
  3. server_namewww.phpfensi.com;
  4. indexindex.htmlindex.htmindex.php;
  5. root/var/www/www.phpfensi.com;
  6. log_formatwww.topjishu.net'$remote_addr-$remote_user[$time_local]$request''$status$body_bytes_sent$http_referer''$http_user_agent$http_x_forwarded_for';
  7. access_log/var/log/www.phpfensi.com.logwww.phpfensi.com;
  8. }

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

include vhost/*.conf;

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

service nginx restart

让 Nginx 虚拟主机支持 PHP

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

  1. server{
  2. listen80;
  3. server_namewww.phpfensi.com;
  4. indexindex.htmlindex.htmindex.php;
  5. root/var/www/www.phpfensi.com;
  6. location~.*.(php|php5)?$
  7. {
  8. fastcgi_passunix:/tmp/php-cgi.sock;
  9. fastcgi_indexindex.php;i
  10. ncludefcgi.conf;
  11. }
  12. log_formatwww.phpfensi.com'$remote_addr-$remote_user[$time_local]$request''$status$body_bytes_sent$http_referer''$http_user_agent$http_x_forwarded_for';
  13. access_log/var/log/www.phpfensi.com.logwww.phpfensi.com;
  14. }

图片防盗链:

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

  1. server{
  2. listen80;
  3. server_namewww.phpfensi.com;
  4. indexindex.htmlindex.htmindex.php;
  5. root/var/www/www.phpfensi.com;#这里为图片添加为期1年的过期时间,并且禁止Google,百度和本站之外的网站引用图片
  6. location~.*.(ico|jpg|jpeg|png|gif)$
  7. {
  8. expires1y;
  9. valid_referersnoneblockeddemo.neoease.com*.google.com*.baidu.com;
  10. if($invalid_referer){
  11. return404;
  12. }
  13. }
  14. log_formatwww.topjishu.net'$remote_addr-$remote_user[$time_local]$request''$status$body_bytes_sent$http_referer''$http_user_agent$http_x_forwarded_for';
  15. access_log/var/log/www.topjishu.net.logwww.phpfensi.com;
  16. }

WordPress 伪静态配置

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

  1. server{
  2. listen80;
  3. server_namewww.phpfensi.com;
  4. indexindex.htmlindex.htmindex.php;
  5. root/var/www/www.phpfensi.com;
  6. location/{
  7. if(-f$request_filename/index.html){
  8. rewrite(.)$1/index.htmlbreak;
  9. }
  10. if(-f$request_filename/index.php){
  11. rewrite(.)$1/index.php;
  12. }
  13. if(!-f$request_filename){
  14. rewrite(.)/index.php;
  15. }
  16. }
  17. rewrite/wp-admin$$scheme://$host$uri/permanent;
  18. location~..(php|php5)?$
  19. {
  20. fastcgi_passunix:/tmp/php-cgi.sock;
  21. fastcgi_indexindex.php;
  22. includefcgi.conf;
  23. }
  24. log_formatwww.phpfensi.com'$remote_addr-$remote_user[$time_local]$request''$status$body_bytes_sent$http_referer''$http_user_agent$http_x_forwarded_for';access_log
  25. /var/log/www.phpfensi.com.logdemo.neoease.com;
  26. }

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 服务器,可承受更大压力.

相关广告
  • Linux下Nginx配置虚拟主机VirtualHost实例教程 Linux下Nginx配置虚拟主机VirtualHost实例教程 Linux下Nginx配置虚拟主机VirtualHost实例教程
相关阅读

Linux下Nginx配置虚拟主机VirtualHost实例教程

2019/10/10 17:45:42 | 谷歌SEO算法 | 黑猫SEO