标签:nginx虚拟主机
虚拟主机:一台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
标签:nginx虚拟主机
原文地址:http://858004880.blog.51cto.com/7265424/1769069