开源、高性能、可靠的Http Web服务器、代理服务器。
1.高性能、高并发(在访问的高峰期时,nginx能比其他web服务器有更快的响应)
2.高扩展性 (可以将功能模块化。 支持官方模块、第三方模块)
3.高可靠性(nginx可持续不间断运行) 4个9 5个9
4.热部署(可在不停止服务的情况下升级Nginx)
5.公司都选择使用Nginx
1.nginx成熟
2.nginx具备非常多的功能 ( 负载均衡、缓存、静态资源加速、web服务、.........waf )
3.nginx上手难度较低、配置文件清晰、
4.统一技术债 ( nginx apache、)
1.nginx反向代理
2.nginx负载均衡
3.nginx HTTPS、Rewrite、
4.nginx 限速、限流、等等
1.配置nginx的官方源,打开nginx.org
点击download
2.点击stable and mainline
3.选择对应的系统版本
4.设置 yum 仓库,创建文件 /etc/yum.repos.d/nginx.repo
,写入以下内容(我这里使用稳定版本的)
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
5.安装yum install nginx -y
1.nginx 的相关配置文件
[root@tpl 一 8月 01 18:38 ~]# rpm -ql nginx
/etc/logrotate.d/nginx #日志轮转配置文件 ( 按天切割日志 )
/etc/nginx
/etc/nginx/conf.d #编写网站的配置文件
/etc/nginx/conf.d/default.conf
/etc/nginx/fastcgi_params
/etc/nginx/mime.types #返回的文件类型 ( 以下载形式回传给浏览器 )
/etc/nginx/modules
/etc/nginx/nginx.conf #重要( 主配置文件 )
/etc/nginx/scgi_params
/etc/nginx/uwsgi_params #结合py
/usr/lib/systemd/system/nginx-debug.service
/usr/lib/systemd/system/nginx.service
/usr/lib64/nginx
/usr/lib64/nginx/modules
/usr/libexec/initscripts/legacy-actions/nginx
/usr/libexec/initscripts/legacy-actions/nginx/check-reload
/usr/libexec/initscripts/legacy-actions/nginx/upgrade
/usr/sbin/nginx #二进制程序
/usr/sbin/nginx-debug
/usr/share/doc/nginx-1.22.0
/usr/share/doc/nginx-1.22.0/COPYRIGHT
/usr/share/man/man8/nginx.8.gz
/usr/share/nginx
/usr/share/nginx/html
/usr/share/nginx/html/50x.html
/usr/share/nginx/html/index.html
/var/cache/nginx
/var/log/nginx #日记路径
2.nginx主配置文件
[root@tpl 一 8月 01 19:11 ~]# cat /etc/nginx/nginx.conf
user nginx; #运行nginx进程的身份
worker_processes auto; #nginx worker进程数 ( CPU核心保持一致 )
error_log /var/log/nginx/error.log notice; #错误日志存放的路径 ( 什么级别的错误才记录 )
pid /var/run/nginx.pid; #nginx进程运行起来会将进程的ID存储在指定的一个文件中
events {
worker_connections 1024; #worker最大支持的连接数 worker_connections * worker_processes
}
--------------------------------------------------------------------------------------
#网络层
http {
include /etc/nginx/mime.types;
default_type application/octet-stream; #如果返回的文件 mime.types 不识别此类型,则默认以下载方式返回给用户
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
------------------------------------------
#'$remote_addr(来源IP) -
#$remote_user(使用什么用户登陆的)
# [$time_local](时间)
#"$request"(包含请求的方法,内容,版本) '
#'$status(状态码)
#$body_bytes_sent(发送的大小)
#"$http_referer"(从哪个页面跳转过来的) '
#'"$http_user_agent"(客户端设备详情信息)
#"$http_x_forwarded_for"'; (浏览当前页面的用户计算机的网关)
-------------------------------------------
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
include /etc/nginx/conf.d/*.conf; #包含/etc/nginx/conf.d/下的所有以.conf结尾的文件
}
3.nginx配置文件编写
例:
1.在特定路径下编写配置文件
vim /etc/nginx/conf.d/test.conf
server{
listen 80; #网站监听的端口
server_name www.test.com; #定义网站访问的域名
location / { (location是用于控制用户请求的URI的路径的)
root /test; #定义站点代码存放的路径(根路径)
index index.html; #定义站点默认返回的页面
}
}
2.测试时记得修改本地的hosts文件,做个劫持,将IP地址与域名绑定
192.168.xx.xx www.test.com
3.根据配置文件,在本地准备一个目录,还有一个配置文件
4.重载nginx
systemctl reload nginx
5.查看测试效果:
URL:http://www.test.com/download/test1.txt
URI:download/test1.txt
真实的文件存放路径=nginx配置文件中定义的服务根目录+URI
所以这里的文件真实路径是:/test/download/test1.txt
在一台服务器上运行多个网站。 通过配置虚拟主机的方法来实现。
1.基于主机多IP的方式 pass ( 服务器有多个IP,10网段配置一个网站,172网段配置一个网站 )
2.基于端口的方式 公司内部
3.基于域名的方式 必用
基于端口的方式:
1.编写配置文件
vim /etc/nginx/conf.d/port.conf
server{
listen 81;
location / {
root /port1;
index index.html;
}
}
server{
listen 82;
location /{
root /port2;
index index.html;
}
}
2.根据配置文件初始化本地目录文件
mkdir /port1
echo "port 81" >/port1/index.html
mkdir /port2
echo "port 82" >/port2/index.html
3.检查语法,重载nginx
nginx -t
systemctl reload nginx
4.查看测试结果
输入81端口:
输入82端口:
基于域名的方式:
1.编写配置文件
vim /etc/nginx/conf.d/test.conf
server{
listen 80;
server_name **www.test.com**;
location / {
root /test;
index index.html;
}
}
vim /etc/nginx/conf.d/test1.conf
server{
listen 80;
server_name **www.test1.com**;
loction / {
root /test1;
index index.html;
}
}
2.根据配置文件初始化本地目录文件
mkdir /test
echo "test" >/test/index.html
mkdir /test1
echo "test1" >/test1/index.html
3.做个劫持,将IP地址与域名绑定
192.168.xx.xx www.test.com
192.168.xx.xx www.test1.com
4.检查语法,重载nginx
nginx -t
systemctl reload nginx
5.查看测试结果
输入域名www.test.com
输入域名www.test1.com
server{
listen 80; #第一步
server_name www.test.com; #第二步
location / { #第三步
root /test; #第四步
index index.html; #第五步 #第六步,返回/test路径下的文件index.html给浏览器
}
}
1.用户通过浏览器访问www.test.com
2.浏览器向DNS服务器请求解析域名www.test.com对应的IP地址
3.DNS服务器将解析出的IP地址返回给浏览器
4.浏览器通过TCP协议与IP地址对应的服务器80端口建立TCP连接
5.在TCP连接的基础上,浏览器发起HTTP请求,请求中会携带Headers
1.请求的域名:www.test.com
2.请求的方法:GET
3.请求的路径:/
4.请求的文档:index.html
6.服务器做出响应,将/index.html文件返回给浏览器
7.释放TCP连接
8.浏览器渲染显示index.html 页面内容