0%

nginx的学习

一、用户访问网站的完整访问流程

1. 客户端用户在浏览器输入网址www.baidu.com,回车后,系统首先会查找系统本地的DNS缓存及hosts文件信息,确定是否存在www.baidu.com域名对应的ip解析记录,如果有就直接获取ip地址,然后去访问这个ip地址对应的域名www.baidu.com的服务器。

2. 如果客户端本地DNS缓存及hosts文件没有www.baidu.com域名对应的ip解析记录,那么系统会把浏览器的解析请求发送给客户端本地设置的local DNS服务器解析,如果local DNS服务器的本地缓存有对应的解析记录就会返回IP地址给客户端,如果没有,则local DNS会请求其他的DNS服务器

3. local DNS从DNS系统的根开始请求对www.baidu.com域名的解析,并针对各个层级的DNS服务器系统进行一系列的查找,最终会找到www.baidu.com域名对应的授权DNS服务器,而这个授权的DNS服务器是企业购买域名时用于管理域名解析的服务器,这个授权服务器会有www.baidu.com对应的ip解析记录,如果没有解析记录,表示企业没有对www.baidu.com域名做解析设置,即网站没有架设好

4. www.baidu.com域名的授权DNS服务器会把www.baidu.com对应的最终ip解析记录发给local DNS

5. local DNS把来自授权DNS服务器www.baidu.com对应的ip解析记录发给客户端浏览器,并且他会把该域名和ip的对应解析缓存起来,以便下一次更快的返回相同解析请求的记录,这些缓存记录在DNS TTL值控制的时间内不会过期

6. 客户端浏览器获取www.baidu.com的对应ip,浏览器会请求获得ip地址对应的网站服务器,网站服务器接收到客户的请求并响应处理,将客户请求的内容返回给客户端浏览器

二、ginx源码包安装

1. 安装Nginx依赖包

1
[root@student02 ~]# yum -y install gcc gcc-c++ automake pcre pcre-devel zlib zlib-devel open openssl-devel

2. 解压nginx安装包

1
[root@student02 ~]# tar -xzvf nginx-1.13.0.tar.gz

3. 生成Makefile文件

1
2
3
4
[root@student02 ~]# cd nginx-1.13.0/
[root@student02 nginx-1.13.0]# ./configure --user=nginx --group=nginx --prefix=/usr/local/nginx-1.13.0 --with-http_stub_status_module --with-http_ssl_module
[root@student02 nginx-1.13.0]# ll Makefile
-rw-r--r--. 1 root root 376 May 22 10:39 Makefile

4. nginx的编译安装

1
2
3
4
[root@student02 nginx-1.13.0]# make && make install
[root@student02 ~]# useradd nginx -s /sbin/nologin -M
[root@student02 ~]# ln -s /usr/local/nginx-1.13.0 /usr/local/nginx
[root@student02 ~]# ln -s /usr/local/nginx/sbin/nginx /usr/sbin/nginx

5. nginx安装目录介绍

1
2
3
[root@student02 nginx-1.13.0]# cd /usr/local/nginx/
[root@student02 nginx]# ls
conf html logs sbin

conf存放了nginx所有的配置文件,nginx.conf是nginx的主配置文件,html目录存放了nginx服务器在运行过程中调用的网页文件,logs目录存放nginx的日志,sbin目录只有一个nginx文件,是nginx服务器的主程序

6. nginx的版本

1
2
[root@student02 ~]# nginx -v
nginx version: nginx/1.10.2

7. 检查nginx配置文件语法

1
2
3
[root@student02 ~]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

8. 启动nginx服务

1
2
3
4
5
[root@student02 ~]# nginx
[root@student02 ~]# ps -ef |grep nginx
root 3757 1 0 11:00 ? 00:00:00 nginx: master process nginx
nginx 3758 3757 0 11:00 ? 00:00:00 nginx: worker process
root 3760 1074 0 11:00 pts/0 00:00:00 grep --color=auto nginx

9. 重启nginx服务

1
2
3
[root@student02 ~]# nginx -s stop
[root@student02 ~]# nginx
[root@student02 ~]# nginx -s reload

10. 查看nginx服务端口

1
2
3
4
5
6
7
8
9
[root@student02 ~]# lsof -i :80
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
nginx 3757 root 8u IPv4 23526 0t0 TCP *:http (LISTEN)
nginx 3757 root 9u IPv6 23527 0t0 TCP *:http (LISTEN)
nginx 3809 nginx 8u IPv4 23526 0t0 TCP *:http (LISTEN)
nginx 3809 nginx 9u IPv6 23527 0t0 TCP *:http (LISTEN)
[root@student02 ~]# netstat -nultp |grep :80' '
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 3757/nginx: master
tcp6 0 0 :::80 :::* LISTEN 3757/nginx: master

11. 检测nginx访问

1
2
[root@student02 ~]# wget 172.25.0.12
[root@student02 ~]# curl 172.25.0.12

三、HTTP协议

1. HTTP的请求方法

在HTTP通信中,每个HTTP请求报文都包含一个请求方法,用于告诉web服务器需要执行哪些具体动作,这些动作包括:获取指定web页面、提交内容到服务器、删除服务器上资源文件等,这些HTTP请求报文的方法称作HTTP请求方法

HTTP请求方法 作用描述
GET 客户端请求指定资源信息,服务器返回指定资源
HEAD 值请求相应报文中的HTTP首部
POST 将客户端的数据提交到服务器
PUT 从客户端上传数据取代指定的文档内容
DELETE 请求服务器删除Request-URI所标识的资源
MOVE 请求服务器将指定的页面移至另一个网络地址

2. HTTP状态码