大纲:
1、Nginx基本简述
nginx是一个开源且高性能、可靠的http web 服务、代理服务
开源:直接截取源代码
高性能:支持海量并发
可靠:服务稳定
2、为什么选择nginx服务
nginx 非常轻量
功能模块少(源代码仅保留http 与核心模块代码,其余不够核心代码会作为插件来安装)
代码模块化(易懂,便于二次开发,对于开发人员非常友好)
3、互联公司都选择nginx
1、nginx技术成熟,具备的功能是企业最常使用而且最重要的
2、适合当前主流架构趋势,微服务、云架构、中间层
3、统一技术栈,降低维护成本,降低技术更新成本
4、nginx采用epool网络模型、Apache采用select模型
select:当用户发起一次请求,select模型就会进行一次遍历扫描,从而导致性能低下
epool:当用户发起请求,epool模型会直接进行处理,效率高,并无连接限制
5、nginx典型应用场景
nginx应用场景:静态服务、代理服务、安全服务、流行架构
操作
1、安装nginx
#1、配置官方nginx的yum源
[root@web01 ~]# cat /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
#2、安装nginx服务,并启动
[root@web01 ~]# yum install nginx
[root@web01 ~]# rpm -qa |grep nginx
nginx-1.16.1-1.el7.ngx.x86_64
[root@web01 ~]# systemctl start nginx
[root@web01 ~]# systemctl enable nginx
Created symlink from /etc/systemd/system/multi-user.target.wants/nginx.service to /usr/lib/systemd/system/nginx.service.
#3、查看10.0.0.7的网页
网页:Welcome to nginx!
If you see this page, the nginx web server is successfully installed and working. Further configuration is required.
For online documentation and support please refer to nginx.org.
Commercial support is available at nginx.com.
Thank you for using nginx.
2、nginx 配置了解
[root@web01 ~]# cat /etc/nginx/nginx.conf
user nginx; # nginx进程的用户身份
worker_processes 1; # nginx的工作进程数量
error_log /var/log/nginx/error.log warn; # 错误日志的路径 [警告级别才会记录]
pid /var/run/nginx.pid; # 进程运行后,会产生一个pid
events { # 事件模型
worker_connections 1024; # 每个work能够支持的连接数
use epoll; # 使用epoll网络模型
}
http { # 接收用户的http请求
include /etc/nginx/mime.types; # 包含所有静态资源的文件
default_type application/octet-stream; # 默认类型 (下载)
日志相关
log_format main '$remote_addr - $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; #启用压缩功能
#使用Server配置网站, 每个Server{}代表一个网站
server {
listen 80;
server_name test.oldxu.com;
location / { #控制网站访问的路径
root ...;
}
}
include /etc/nginx/conf.d/*.conf; 包含哪些文件
}
3、nginx中的http、server、location之间的关系
http:标签主要用来解决用户的请求与响应
server:标签主要用来响应具体的某一个网站
location:标签主要用于匹配网站具体URL路径
http{} 层下允许有多个Server{},可以有多个网站.
一个Server{} 下又允许有多个location{} 每个网站的uri路径不同,所以要分别进行匹配
4、用nginx搭建本地游戏网站
1.注释掉之前的默认网站
[root@web01 ~]# cd /etc/nginx/conf.d/
[root@web01 conf.d]# ls
default.conf
[root@web01 conf.d]# gzip default.conf
2.编写游戏网站Nginx配置文件
[root@web01 conf.d]# cat game.oldxu.com.conf
server{
listen 80; #该网站提供访问的端口
server_name game.oldxu.com; #访问该网站的域名
location / {
root /code; #指定服务器真是的路径 固定格式
index index.html; 固定格式
}
}
3.根据Nginx的配置文件,初始化
[root@web01 conf.d]# mkdir /code
4.上传代码
[root@web01 conf.d]# cd /code/
[root@web01 code]# rz html5.zip
[root@web01 code]# ls
html5.zip
[root@web01 code]# unzip html5.zip
5.检测语法
[root@web01 code]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
6.重载服务
[root@web01 code]# systemctl restart nginx
7.配置域名解析
[C:\Windows\System32\drivers\etc]位置
本地电脑-->windows-->system32-->drivers-->etc-->hosts
用notepad++ 打开入web服务器的ip和配置文件里的域名保存 访问域名网站
5、添加wzq.dandan.com游戏网站
#1、注释掉之前的默认网站
[root@web01 ~]# cd /etc/nginx/conf.d/
#2编写游戏网站Nginx配置文件
[root@web01 conf.d]# cat wzq.dandan.com.conf
server{
listen 80;
server_name wzq.dandan.com;
location / {
root /code2/Gomoku;
index index.html;
}
}
#3.根据Nginx的配置文件,初始化
[root@web01 conf.d]# mkdir /code2
#4.上传代码
[root@web01 conf.d]# cd /code2/
[root@web01 code2]# rz
[root@web01 code2]# ls
darkwing-Gomoku-master.zip
[root@web01 code2]# unzip darkwing-Gomoku-master.zip
[root@web01 code2]# ls
darkwing-Gomoku-master.zip Gomoku
#5.检测语法
[root@web01 code2]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
#6、重载
[root@web01 conf.d]# systemctl restart nginx
#7.配置域名解析
[C:\Windows\System32\drivers\etc]位置
本地电脑-->windows-->system32-->drivers-->etc-->hosts
用notepad++ 打开入web服务器的ip和配置文件里的域名保存 访问域名网站
6、添加wx.dandan.com游戏网站
#1、注释掉之前的默认网站
[root@web01 ~]# cd /etc/nginx/conf.d/
#2编写游戏网站Nginx配置文件
[root@web01 conf.d]# cat wx.dandan.com.conf
server{
listen 80; #访问该网站提供的端口
server_name wx.dandan.com; #访问该网站的域名
location / {
root /code3/Mota;
index index.html;
}
}
#3.根据Nginx的配置文件,初始化
[root@web01 conf.d]# mkdir /code3
#4.上传代码
[root@web01 conf.d]# cd /code3/
[root@web01 code3]# rz
[root@web01 code3]# ls
Vinlic-Mota-master.zip
[root@web01 code3]# unzip Vinlic-Mota-master.zip
[root@web01 code3]# ls
Mota Vinlic-Mota-master.zip
#5.检测语法
[root@web01 code3]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
#6、重载
[root@web01 code3]# systemctl restart nginx
#7.配置域名解析
[C:\Windows\System32\drivers\etc]位置
本地电脑-->windows-->system32-->drivers-->etc-->hosts
用notepad++ 打开入web服务器的ip和配置文件里的域名保存 访问域名网站
7、实例1
基于主机多IP方式
[root@web01 conf.d]# cat ip_eth0.conf
server {
listen 10.0.0.7:80;
location / {
root /ip1;
index index.html;
}
}
server {
listen 172.16.1.7:80;
location / {
root /ip2;
index index.html;
}
}
[root@web01 conf.d]# mkdir /ip1 /ip2
[root@web01 conf.d]# echo "10...." > /ip1/index.html
[root@web01 conf.d]# echo "172...." > /ip2/index.html
[root@web01 conf.d]# systemctl restart nginx
测试访问
[root@web01 ~]# curl http://10.0.0.7
10....
[root@web01 ~]# curl http://172.16.1.7
172....
8、实例2
基于端口的配置方式 81 82 83
公司内部有多套系统,希望部署在一台服务器上, 而内网又没有域名.
所以,我们可以通过相同IP,不同的端口,访问不同的网站页面.
[root@web01 conf.d]# cat port.conf
server {
listen 81;
location / {
root /81;
index index.html;
}
}
server {
listen 82;
location / {
root /82;
index index.html;
}
}
server {
listen 83;
location / {
root /83;
index index.html;
}
}
[root@web01 conf.d]# mkdir /81 /82 /83
[root@web01 conf.d]# echo "81" > /81/index.html
[root@web01 conf.d]# echo "82" > /82/index.html
[root@web01 conf.d]# echo "83" 3> /83/index.html
在浏览器上访问ip加端口即可出结果
9、io网络模型:
同步
异步
阻塞
非阻塞
同步阻塞
同步非阻塞
异步阻塞
异步非阻塞