程序员的套路,任何语言的第一个服务,都是‘Hello world’,我们也来搞一个Hello world服务。
5.1 第一个Hello world 服务
修改默认html文件
/usr/local/nginx/html/index.html
<!DOCTYPE html>
<html>
<head>
<title>Welcome to OpenResty!</title>
</head>
<body>
<h1>Welcome to OpenResty!</h1>
<p><em>hello world</em></p >
</body>
</html>
定义默认serverName
/usr/loca/nginx/conf/nginx.conf
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm index.php;
}
}
说明:
- 每个nginx服务都会有默认的server_name,默认指定localhost,即可以通过http://127.0.0.1/访问
- 参数:root html;指的默认代码路径是/usr/local/nginx/html/目录。
- 生产环境,server_name都是填写真实域名,不会使用localhost。
- 当一个nginx服务上,只有一个server_name时,即使你配置多个域名的解析,解析到该机器上个,你访问任何域名默认都会到该server_name上。
- 当一个nginx服务上,有一个server_name localhost;并且还有其它A域名的server_name,那么如果B域名也解析到该机器上,访问B域名默认也是到localhost这个server_name上。
- 一个nginx服务上,有多个server_name,域名都是解析到该机器,请求到nginx服务上,nginx服务会根据请求的头信息header中的host,去寻找对应的server_name,如果没有匹配,则默认指到server_name localhost下。
5.2 Nginx服务的基本功能
应用场景介绍:
- 企业级配置,一台机器多个域名,多个服务
- 以百度举例
- 获取服务连接状态,判断服务性能指标
- 控制层使用
5.2.1 Nginx基于域名和IP的多个虚拟主机
1)环境准备:
cp /usr/local/nginx/html/index.html /usr/local/nginx/html/51xue.html
cat /usr/local/nginx/html/51xue.html
<!DOCTYPE html>
<html>
<head>
<title>Welcome to 51xue website!</title>
<style> body {
width: 35em;
margin: 0 auto;
font-family:
Tahoma, Verdana, Arial, sans-serif;
} </style>
</head>
<body>
<h1>Welcome to 51xue nginx website!</h1>
<p>If you see this page, 51xue nginx homepage! </p>
<p><em>Thank you for flying 51xue nginx website.</em></p>
</body>
</html>
2)虚拟主机配置
基于域名的虚拟机主机配置:
server {
server_name www.51xue.com;
access_log logs/test51xue.access.log main;
error_log logs/test51xue.error.log;
index index.html index.php index.htm;
root /usr/local/nginx/;
location / {
root /usr/local/nginx/html/;
index 51xue.html;
}
}
基于域名的虚拟机主机功能测试:
基于域名的ip主机配置:
- 修改配置文件的server_name,调整成一个IP。
- 修改51xue.html,增加一个标识,方式和上一个页面混合
server {
server_name 192.168.0.51;
access_log logs/test51xue.access.log main;
error_log logs/test51xue.error.log;
index index.html index.php index.htm;
root /usr/local/nginx/;
location / {
root /usr/local/nginx/html/;
index 51xue.html;
}
}
基于域名的ip主机功能测试:
3)虚拟主机的使用
- 一般线上使用最多的,是通过域名的方式,使用ip的方式很少很少。
- 一般ip的方式是用于企业内部调用,内部测试,减少绑定hosts的操作。
5.2.2 Nginx虚拟主机的别名功能
1) 别名存在的意义
(1)什么是别名
- 域名解析分为几种,常用的针对做网站访问来用的有两种, 一种是只解析到IP的,叫做A记录, 一种是解析到另外一个域名,叫做CNAME记录,也叫别名解析。
(2)为什么要使用别名
- 输入完整域名繁琐,因为根域‘www’都是一样的,采用别名方式可以更方便。
- 单域名存在不同的应用场景,比如,公网,内网
- 单域名存在不同的业务用途,如www.51xue.com,不仅代表51xue官网,还有其博客体系,那么可以增加别名,“51xueblog.com”,不同的业务调用通过域名就知道当前业务是blog业务
(3)示例百度别名
- www.a.shifen.com. 就是www.baidu.com的别名,也叫cname
dig www.baidu.com ;
<<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6_4.6
<<>> www.baidu.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 32775 ;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 0 ;;
QUESTION SECTION: ;www.baidu.com. IN A ;;
ANSWER SECTION:
www.baidu.com. 721 IN CNAME www.a.shifen.com.
www.a.shifen.com. 246 IN A 112.80.248.76
www.a.shifen.com. 246 IN A 112.80.248.75
2)别名配置与验证
虚拟主机别名功能配置:
- 在server_name下增加不同的域名,可以是顶级域名,也可以是二级域名
server {
server_name www.51xue.com 51xue.com.cn;
access_log logs/test51xue.access.log main;
error_log logs/test51xue.error.log;
index index.html index.php index.htm;
root /usr/local/nginx/;
location / {
root /usr/local/nginx/html/;
index 51xue.html;
}
}
虚拟主机别名功能测试:
5.2.3 Nginx的状态信息功能实战
1)状态信息模块介绍
- 模块名称:--with-http_stub_status_module
- 模块作用:用于获取当期nginx服务的状态信息,包括连接数量,超时数量,统计等
- 使用场景:
- 安装编译:在configure编译的时候制定这个模块,该模块是默认存在的,不属于第三方模块,因此,直接追加即可。
./configure --prefix=/usr/local/openresty/nginx --with-http_stub_status_module
线上检测:/usr/local/nginx/sbin/nginx -V | grep 'with-http_stub_status_module'
2)虚拟主机别名功能配置:
- 增加location /51xuestatus,用于获取状态信息
- 对应location中去调用stub_status模块
- 这个模块的作用于只能在server,location段。
server {
server_name www.51xue.com 51xue.com.cn;
access_log logs/test51xue.access.log main;
error_log logs/test51xue.error.log;
index index.html index.php index.htm;
root /usr/local/nginx/;
location / {
root /usr/local/nginx/html/;
index 51xue.html;
}
location /51xuestatus {
stub_status;
}
}
3)虚拟主机别名功能测试:
- Active connections: 39当前活动的连接数
- 118112 总连接数connection
- 118112 成功的连接数connection 失败连接=(总连接数-成功连接数)
- 502431 总共处理的请求数requests
- Reading: 0 读取客户端Header的信息数 请求头
- Writing: 1 返回给客户端的header的信息数 响应头
- Waiting: 38 在开启keep-alive的情况下,这个值等于active-(reading+writing),nginx处理完请求正在等待下一次请求的驻留连接。