Nginx虚拟主机配置

转载 临风  2017-12-21 11:16:48  阅读 1167 次 评论 1 条
摘要:

Nginx (engine x) 是一个高性能的HTTP反向代理服务器,也是一个IMAP/POP3/SMTP服务器。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。
其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。2011年6月1日,nginx 1.0.4发布。
Nginx是一款轻量级Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东新浪网易腾讯淘宝等。


关于nginx虚拟主机的配置说明,网上有很多文章了。这里主要内容也差不多,只是自己在配置过程中的一些经历记录一下。

配置很简单

server{
listen 80;
server_name test.com www.test.com;

#根目录及默认文档
root /media/bak/sitesTamplate/php/iwebsns;
index index.html index.htm index.php;

location / {
    try_files $uri $uri/ /index.html;
}

#php解析
location ~ \.php {
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    include fastcgi_params;
}
}

下面是配置fcgi参数的文件 包含了php path_info
fastcgi_split_path_info ^((?U).+.php)(/.+)$;

#检测解析到的php文件是否存在,修复nginx文件解析漏洞
if ( !-e $document_root$fastcgi_script_name){
    return 404;
}
fastcgi_param    SCRIPT_FILENAME        $document_root$fastcgi_script_name;
fastcgi_param    PATH_INFO        $fastcgi_path_info;
fastcgi_param    PATH_TRANSLATED        $document_root$fastcgi_path_info;

fastcgi_param    QUERY_STRING        $query_string;
fastcgi_param    REQUEST_METHOD        $request_method;
fastcgi_param    CONTENT_TYPE        $content_type;
fastcgi_param    CONTENT_LENGTH        $content_length;

#fastcgi_param    SCRIPT_FILENAME        $request_filename;
fastcgi_param    SCRIPT_NAME        $fastcgi_script_name;
fastcgi_param    REQUEST_URI        $request_uri;
fastcgi_param    DOCUMENT_URI        $document_uri;
fastcgi_param    DOCUMENT_ROOT        $document_root;
fastcgi_param    SERVER_PROTOCOL        $server_protocol;

fastcgi_param    GATEWAY_INTERFACE    CGI/1.1;
fastcgi_param    SERVER_SOFTWARE        nginx/$nginx_version;

fastcgi_param    REMOTE_ADDR        $remote_addr;
fastcgi_param    REMOTE_PORT        $remote_port;
fastcgi_param    SERVER_ADDR        $server_addr;
fastcgi_param    SERVER_PORT        $server_port;
fastcgi_param    SERVER_NAME        $server_name;

# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param    REDIRECT_STATUS        200;

修改nginx配置参数后,使用nginx -t检查配置.

提示successfull后就可以使用 nginx -s reload来重新加载配置

我配置的过程中遇到这样的问题,就是绑定了主机名后,重新加载配置时会出现警告

nginx: [warn] conflicting server name "localhost" on 0.0.0.0:80, ignored

意思是重复绑定了server name,但这个警告不会影响到服务器运行。而且,这个重复绑定的意思是现在运行的nginx服务和将要加载的新配置中的重复,所以,这个警告其实是不必的。

还有在我给第一个主机设定了default_server的时候,重新加载配置就会出错了,最初就是这个原因让我误以为nginx不能在同一ip端口绑定多个域名。

但其实是可以的。我的解决办法是杀掉nginx进程重新启动,或者先去掉default_server设定,重新加载nginx配置后,再加上,再重新配置。

呵呵,是不是麻烦了点,不知道高手们是怎么解决的。

附nginx本机hosts映射

127.0.0.1    test.com
127.0.0.1    www.test.com

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

本文地址:https://www.mainblog.cn/10.html
温馨提示:文章内容系作者个人观点,不代表阁主博客对观点赞同或支持。
版权声明:本文为转载文章,来源于 临风 ,版权归原作者所有,欢迎分享本文,转载请保留出处!
免责申明:有些内容源于网络,没能联系到作者。如侵犯到你的权益请告知,我们会尽快删除相关内容。

发表评论


表情

评论列表

  1. 十三侠客网
    十三侠客网  浏览器图标  系统图标 【评论达人 LV.1】  @回复

    啦啦啦啦啦了