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
和win下面一样,文件路径在/etc/hosts