在nginx中虚拟主机配置有多种方法:可以直接在主配置文件(nginx.conf)中增加,也可以将所有的虚拟主机单独写一个文件然后在主配置段中包含进去(include 文件名),最后一种方法是每个虚拟主机都为一个单独的配置文件。本篇以第三种方法来做演示
首先确保nginx已经安装完成接下来创建虚拟主机的配置文件及虚拟主机文件所在的目录(我的安装路径在/usr/local/nginx)
cd /usr/local/nginx/conf #切换到配置文件目录 mkdir vhosts #创建虚拟主机配置文件所在的目录 touch vhosts/vhost1.conf #创建第一个虚拟主机的配置文件 |
在此文件中加入如下行:
server { listen 80; # 设置监听端口; server_name www.test.com; # 设置主机名; location / { # 定义网站跟目录; root /web/vhost/test1; # 此目录如果不存在则需创建 index index.html; # 此文件也需要事先创建 } error_page 500 502 503 504 /usr/local/nginx/html/50x.html; # 定义页面状态码为5XX系列的错误页面 access_log /web/vhost/test1/logs/test1.access.log; # 设置访问日志路径 error_log /web/vhost/test1/logs/logs/test1.error.log crit; # 设置错误日志路径 } |
如果有关上方的目录及文件不存在则按照一下方法创建
mkdir /web/vhost/test/logs -p touch /web/vhost/test/index.html 编辑index.html文件随便添加内容然后保存退出即可 |
这时虚拟主机的配置文件已经搞定,但是重启nginx服务是不会生效的因为并没有包含进去,打开nginx.conf文件将其添加至http{}段的最后一行,一定要在http段中。
由于是测试使用所以打开浏览器可能也不会访问到,这时可以修改本机的hosts文件添加如下内容:
IP(web server 的服务器ip地址) hostname(就是我们定义的server_name)
全部设置完成后就可以重启nginx服务器了,如果没有添加服务启动脚本的话可以使用nginx -s quit && nginx启动(如果没有将nginx的sbin目录加入到环境变量中就需要使用绝对路径来启动它/usr/local/nginx/sbin/nginx -s quit && /usr/local/nginx/sbin/nginx)
查看下访问结果
接下来为此虚拟主机开启状态监控功能,在虚拟主机的配置文件中加入一下内容
location /status{ stub_status on; #启动状态功能 access_log off; #关闭访问日志 } |
使用nginx -t 来检查配置文件是否正常,如果出现一下内容表示配置文件正常,可以重启nginx服务
然后在浏览器中输入www.test.com/status 查看状态页面是否显示
活跃连接数2个,接受5个请求 处理5个请求 响应64个(我一直在刷新。。) 读0个 写1个 等待1个
一般这些状态页面是不允许未经授权的用户访问的,所以我们需要设置一下用户认证,在虚拟主机的状态页面中添加如下内容:
auth_basic "admin"; auth_basic_user_file /web/vhost/test1/.passwd; |
接下来在/web/vhost/test1/目录下生成.passwd文件生成方法有以下两种
A.使用htpasswd工具直接生成
htpasswd -c -m /web/vhost/test1/.passwd # htpasswd 为httpd的工具如果无法使用请安装yun imstall httpd-tools |
B.使用openssl 加密后手动创建文件并添加
openssl passwd -apr1 -salt `echo $RANDOM` touch /web/vhost/test1/.passwd |
此文件的格式为:
用户名:密码 |
使用nginx -t检查下,如果配置文件没问题那就重读下配置文件 nginx -s reload 然后打开浏览器尝试访问
本文出自 “Yxn” 博客,请务必保留此出处http://jyxnt.blog.51cto.com/9581167/1596949
原文地址:http://jyxnt.blog.51cto.com/9581167/1596949