虚拟主机:一台web主机配置多个站点,每个站点,希望用不同的域名和站点目录,或者是不同的端口,或者是不同的IP。
假设网站的域名为:25linux.com,网站下面设有
三个站点,这样我们可以在一台nginx主机上配置虚拟主机来实现。
通常虚拟主机分为3种:
基于域名,基于端口,基于IP,以及它们的混合来实现,我这里以基于域名的方式来创建虚拟主机。
# 我打算以nginx的默认root目录来创建www、blog、bbs三个网站的目录,# 切换到nginx的root目录,默认为Root "/usr/local/nginx/html"
[root@web ~]# cd /usr/local/nginx/html/
# 创建www,bbs,blog三个目录:
[root@web html]# mkdir {www,bbs,blog}
# 给三个站点分别创建index.html页面:[root@nginx html]# touch {www,blog,bbs}/index.html
# for name in www bbs blog;do echo "http://$name.25linux.com" >/usr/local/nginx/html/$name/index.html;done
[root@webhtdocs]# cat bbs/index.html
http://bbs.25linux.com
[root@webhtdocs]# cat www/index.html
http://www.25linux.com
[root@webhtdocs]# cat blog/index.html
http://blog.25linux.com我们把nginx.conf主配置文件中的server段的配置给提取出来,放到单独的文件中,就像apache的虚拟主机配置一样,我这里要建3个站点所以使用3个配置文件www_server.conf;include bbs_server.conf;include bbs_server.conf
[root@nginx nginx]# tail -84 nginx.conf >www_server.conf [root@nginx nginx]# tail -84 nginx.conf >bbs_server.conf [root@nginx nginx]# tail -84 nginx.conf >blog_server.conf
注意:需要删除最后一行的“}”号。 然后在主配置文件中删除所有的server段,
在http段中加入include www_server.conf;include bbs_server.conf;include bbs_server.conf三个配置文件,
[root@nginx nginx]# vim nginx.conf
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
#log_format main ‘$remote_addr - $remote_user [$time_local] "$request" ‘
# ‘$status $body_bytes_sent "$http_referer" ‘
# ‘"$http_user_agent" "$http_x_forwarded_for"‘;
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
include www_server.conf;
include bbs_server.conf;
include bbs_server.conf;
}我们分别在www_server.conf;include bbs_server.conf;include bbs_server.conf配置文件中配置三个虚拟主机
先检查一下语法 [root@nginx nginx]# /usr/local/nginx/sbin/nginx-t nginx: the configuration file/etc/nginx/nginx.conf syntax is ok nginx: configuration file/etc/nginx/nginx.conf test is successful
[root@nginx nginx]# vim www_server.conf
server {
listen 80;
server_name www.25linux.com;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html/www;
index index.phpindex.html index.htm;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
root html/www;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
# deny access to .htaccess files, if Apache‘s document root
# concurs with nginx‘s one
#
#location ~ /\.ht {
# deny all;
#}
}[root@nginx nginx]# vim bbs_server.conf
server {
listen 80;
server_name bbs.25linux.com;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html/bbs;
index index.php index.htmlindex.htm;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
root html/bbs;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
# deny access to .htaccess files, if Apache‘s document root
# concurs with nginx‘s one
#
#location ~ /\.ht {
# deny all;
#}
}server {
listen 80;
server_name blog.25linux.com;
root html/blog;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
index index.php index.htmlindex.htm;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
root html/blog;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
# deny access to .htaccess files, if Apache‘s document root
# concurs with nginx‘s one
#location ~ /\.ht {
# deny all;
#}
}修改后,再次检查语法: [root@nginx nginx]# /usr/local/nginx//sbin/nginx-t nginx: the configuration file/etc/nginx/nginx.conf syntax is ok nginx:configuration file /etc/nginx/nginx.conf test is successful 最后重新加载nginx: [root@nginx nginx]# service nginx reload nginx: the configuration file /etc/nginx/nginx.confsyntax is ok nginx: configuration file/etc/nginx/nginx.conf test is successful Reloadingnginx: [ OK ]
由于用的是测试域名,没有经过dns服务器解析,所以需要在windows的机器上的hosts文件添加dns记录,电脑才能通过域名访问:
nginx虚拟主机配置成功,下面我们来搭建3个虚拟主机的站点。
本文出自 “汛熙时空” 博客,请务必保留此出处http://858004880.blog.51cto.com/7265424/1769069
原文:http://858004880.blog.51cto.com/7265424/1769069