nginx 安装
先配置nginx源
vim /etc/yum.repos.d/nginx.repo
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
安装
yum install nginx -y
[root@web01 ~]# rpm -qa nginx
nginx-1.18.0-1.el7.ngx.x86_64 (版本)
程序在启动的过程中,如果出现报错,一般都是端口冲突了
netstat -lntp 查看所有使用的端口,然后把占用的端口kill,,Nginx默认也是80
Nginx的目录结构
/etc/nginx/nginx.conf #主配置文件 ( 驾驶员 )
/usr/sbin/nginx #编译出来的二进制文件 ( 汽车 )
/var/log/nginx #访问日志和错误日志
cat /etc/nginx/nginx.conf
include /etc/nginx/conf.d/*.conf;
代表包含/etc/nginx/conf.d下的所有以.conf结尾的文件。用include的方式包含了。
include : 把在它下边的文件单独拿了出来,单独抒写。但根本还在include下。
添加一个网站,最基本的抒写规则:
server { #server表示要配置网站,每个Server{} 代表一个网站,简称虚拟主机
listen 80; #这个网站监听80端口
server_name oldxu.com; #这个网站的域名是什么
location / { #控制网站访问的路径
root /usr/share/nginx/html; #定义网站源代码存放的路径
index index.html index.htm; #默认返回哪个文件作为默认返回页
}
}
在浏览器访问域名的时候,默认去访问本地的哪个路径下的文件。 / 是通用(相当于10.0.0.7 与10.0.0.7/访问的是一个意思。会自动添加)
然后去本地的磁盘中找对应的文件。
root 就是关键字。它是用来定义网站源代码存放的路径。
index也是关键字。查询到具体的文件,如果有index.html。就直接返回这个文件里的内容。如果没有这个文件,就去找index.htm这个文件。如果都没有肯定就报错了。
每一个server 代表一个网站。
http {
server {
location {
}
}
}
nginx中的http、server、location之间的关系是?
http:主要用来解决用户的请求和响应。 www test tt
server:主要用来响应具体的某一个网站。
location:用于匹配网站的uri路径。
http{} 下面可以有多个 Server{} 每个server{} 又可以有多个 location {}
url http://10.0.0.7/index.html
uri /index.html
在抒写网站时,先把默认的gzip
[root@web01 ~]# gzip /etc/nginx/conf.d/default.conf
抒写一个最简单的游戏网站
1.找到代码
2.创建目录
3.编写nginx配置
4.检查语法
5.配置域名劫持(因为是假域名)
vim /etc/nginx/conf.d/game.oldxu.com.cof (需要写很多网站,所以将域名写成的文件名。)
编写的域名,肯定在http层,但是因为有include。所以只需要写在/etc/nginx/conf.d/下就可以了。
server { 一个网站一个server
listen 80; 监听的80
server_name game.oldxu.com; 域名是啥
location / { 具体的匹配位置
root /code; 在根下的code
index index.html; 下边的index.html
}
}
nginx -t (检查语法)
systemctl restart nginx (重启nginx)
然后域名劫持 c:\windows\system32\drives\etc\hosts
10.0.0.7 game.oldxu.com
访问流程
1.浏览器输入域名,game.oldxu.com--->http://game.oldxu.com/
2.做域名解析。返回对应的ip地址
3.浏览器通过随机端口,与服务端的80端口建立tcp连接。然后发起http请求
4.请求被对应的nginx的80端口接收,交给nginx的http层去做响应。
5.http层会去查找是否有对应的域名。
6.满足域名的匹配之后,检查用户对应的路径请求(location)
7.将对应的/code/index.html返回用户。
8.Nginx应用程序也会像内核发起请求,获取磁盘中的某个文件,然后拷贝到内核缓冲区,然后在到nginx的进程缓冲区。然后Nginx应用进程进行封装报文,回传给客户端的浏览器。