您的位置:首页 > 运维架构 > Nginx

​Nginx虚拟主机配置

2015-11-19 16:02 447 查看
Nginx虚拟主机配置
利用虚拟主机技术,可以把一台真正的主机分成许多"虚拟"的主机,每一台虚拟主机都具有独立的域名和IP地址,具有完整的Internet服务器(www, FTP,email)功能。 虚拟主机之间完全独立,在外界看来,每一台虚拟主机和一台独立的主机完全一样。目前生产环境中,大多数服务提供商都采用了虚拟主机的方式为客户提供web服务,虚拟主机包括基于IP的虚拟主机,基于端口的虚拟主机和基于名称的虚拟主机,本实验中以基于名称实现虚拟服务器。
1、创建虚拟主机对应的目录及网页
进入/usr/local/nginx/html目录创建jason1、jason2文件夹并设置index.html页面[root@jason1html]#cd /usr/local/nginx/html/jason2
[root@jason1jason2]# pwd
/usr/local/nginx/html/jason2
[root@jason1jason2]# ls
index.html
[root@jason1jason2]# cd /usr/local/nginx/html/jason1
[root@jason1jason1]# ls
index.html
[root@jason1jason1]# pwd
/usr/local/nginx/html/jason1

2、配置虚拟主机,如下:
user nobody;
worker_processes 1;
pid nginx.pid;
error_log logs/error.log notice;
worker_rlimit_nofile 65535;

events{
worker_connections 65535;
use epoll;
}

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"';
log_format download '$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;
client_max_body_size 20M;
client_header_buffer_size 4k;
large_client_header_buffers 4 8k;
client_header_timeout 10;
client_body_timeout 10;
send_timeout 10;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 60;

gzip on;
gzip_min_length 1k;
gzip_http_version 1.1;
gzip_buffers 4 8k;
gzip_comp_level 2;
gzip_types text/plain application/x-javascripttext/css application/xml;
gzip_vary on;

server {
listen80;
server_name www.jason1.com;
access_log logs/access.log main;
server_name_in_redirect off;

location / {
index index.html;
root/usr/local/nginx/html/jason1;
}

error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/local/nginx/html;
}

location /status {
stub_status on;
access_log/usr/local/nginx/logs/status.log;
auth_basic"NginxStatus";
auth_basic_user_file/usr/local/nginx/conf/htpasswd;}

location ~ /\.ht {
deny all;
}
}

server {
listen 80;
server_name www.jason2.com;
access_log logs/access.log main;
server_name_in_redirect off;

location / {
index index.html;
root /usr/local/nginx/html/jason2;
}
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/local/nginx/html;
}

location /status {
stub_status on;
access_log/usr/local/nginx/logs/status.log;
auth_basic"NginxStatus";
auth_basic_user_file/usr/local/nginx/conf/htpasswd;}

location ~ /\.ht {
deny all;
}
}

}备注:红色字体为虚拟主机配置部分。(1)虚拟主机设置:listen80;
server_name www.jason1.com;
access_log logs/access.log main;
server_name_in_redirect off;

location / {
index index.html;
root /usr/local/nginx/html/jason1;
}
设置虚拟主机www.jason1.com,页面文件根目录为/usr/local/nginx/html/jason1。相同方法设置另外一台虚拟主机。(2)、nginx虚拟主机状态每台虚拟主机开启nginx运行状态,编译nginx时需要加入--with-http_stub_status_module模块开启状态检测。location/status { stub_statuson;
access_log/usr/local/nginx/logs/status.log;
auth_basic "NginxStatus";
auth_basic_user_file/usr/local/nginx/conf/htpasswd;}
由于Nginx的auth_basic认证采用的是与apache兼容的密码文件,因此创建密码文件可使用apache的htpasswd工具生成密码文件。账户密码都设置为admin。
[root@jason1 nginx]# /usr/bin/htpasswd -c/usr/local/nginx/conf/htpasswd admin
New password:
Re-type new password:
Adding password for user admin
[root@jason1 nginx]

备注:若未设置auth_basic与auth_basic_user_file参数,查看nginx状态时无需输入账户与密码。
3、启动nginx通过web页面访问,本实验环境中午DNS服务器,在客户端主机hosts文件中加入ip地址与域名的对应关系进行访问。

访问主机二:



访问主机一:



查看nginx状态



输入账户与密码admin,点击确定。




虚拟主机2状态查看



输入账户与密码admin,点击确定。




Active connections: 对后端发起的活动连接数.
Server accepts handled requests: Nginx总共处理了142个连接,成功创建142次握手,总共处理了120个请求.
Reading: Nginx 读取到客户端的Header信息数.
Writing: Nginx 返回给客户端的Header信息数.
Waiting: 开启keep-alive的情况下,这个值等于 active – (reading + writing),意思就是Nginx已经处理完成,正在等候下一次请求指令的驻留连接数.所以,在访问效率高,请求很快被处理完毕的情况下,Waiting数比较多是正常的.如果reading +writing数较多,则说明并发访问量非常大,正在处理过程中。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息