Nginx简单了解
一:Nginx介绍
1:基本信息
Nginx (engine x) 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器。
Nginx 解决了服务器的C10K(就是在一秒之内连接客户端的数目为10k即1万)问题
- 管理员只关心master进程
- 管理员没有直接调用worker进程,而是通过发信号来实现
- worker是一个进程而非线程
- 客户端直接连接worker和master没有关系
2:nginx的特点
- 跨平台:可以在大多数Unix like 系统编译运行。
- 配置异常简单:非常的简单,易上手。
- 采用Master/worker多进程工作模式(区分master/slaver)
- Nginx接收用户请求是异步的,即先将用户请求全部接收下来,再一次性发送到后端Web服务器,极大减轻后端Web服务器的压力。
- Nginx代理和后端Web服务器间无需长连接;
二:正向代理和反向代理
Nginx用的最多的是一个反向代理服务器
正向代理:代理服务器一般指局域网内部的机器通过代理服务器发送请求到互联网上的服务器,代理服务器一般作用在客户端。
反向代理:作用在服务器端,它在服务器端接收客户端的请求,然后将请求分发给具体的服务器进行处理,然后再将服务器的相应结果反馈给客户端。
三:Nginx安装
1:第一步下载并解压nginx(1.19.6为例)
cd /usr/local 切换到指定目录中
wget http://nginx.org/download/nginx-1.19.6.tar.gz 下载nginx
tar -zxvf nginx-1.19.6.tar.gz 解压
2:安装依赖项
yum -y install gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel 安装依赖项
3:配置Nginx安装选项
这里只配置安装到/usr/local目录下,其它选项可执行./configuration –help查看
cd /usr/local/nginx-1.19.6 跳转到解压后的目录
./configure --prefix=/usr/local/nginx --sbin-path=/usr/bin/nginx 配置安装属性
4:编译并安装
make && make install
5:验证安装以及关闭重启
下面可以使用 nginx 是因为在/ usr/bin 中有 nginx 指令
命令:
nginx 启动nginx
ps -ef | grep nginx 可通过ps -ef | grep nginx查看nginx是否已启动成功
nginx -s reload 重新启动
nginx -s stop 停止nginx
如图
6:访问
启动nginx之后,直接在浏览器进行访问:
http://192.168.x.x/
如果访问不了,请检查防火墙是否放行80端口,centos6版本以下命令
/sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT
将该设置添加到防火墙的规则中
/etc/rc.d/init.d/iptables save
centos7 添加放行
firewall-cmd --zone=public --add-port=80/tcp --permanent
重启防火墙
firewall-cmd --reload
或者直接关闭防火墙
systemctl stop firewalld
如图默认是80端口
7 :设置vim编写nginx配置文件语法高亮提示
- 进入/usr/local/nginx-1.19.6/contrib
cd /usr/local/nginx-1.19.6/contrib
- 创建目录
mkdir /root/.vim
- 复制vim目录
cp -r vim/* /root/.vim/
此时使用vim打开配置文件就会高亮提示
三:修改访问主页
1:编辑主页面
位置:/usr/local/nginx/html
vim /usr/local/nginx/html/index.html
进入之后简单修改测试一下
2:测试结果
四:实现分布式(分而治之)
1:创建一个配置文件(root.conf)
在当前位置:/usr/local/nginx/conf/下新建一个配置文件
root.conf
server {
listen 81;
server_name localhost master;
location / {
root html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
2:在nginx.conf配置文件中引入新建的配置文件
在nginx.conf配置文件倒数第二行引入新建的配置文件信息
我这里新建的配置文件名叫root.conf(注意不要丢了分号)
include root.conf;
3:验证结果(默认的nginx首页)
此时就可以采用81端口进行访问
五:nginx命令以及文件的介绍
1:停止nginx以及启动nginx
nginx -s stop --暴力退出
nginx -s quit --静默退出
nginx --启动nginx
nginx -s reload --重新加载nginx
nginx -s reopen --重新打开日志文件
nginx -t --检查是否正常
2:命令帮助以及产看版本号
nginx -? -- 查看命令的帮助项
nginx -v -- 查看版本号
3:查看nginx的bin
whereis nginx
4:nginx目录下的主要目录介绍
- logs 日志记录目录
- html 页面根目录
- conf 配置文件目录
5:配置文件的特性
- 1指令或者指令块组成 。
- 2所有的指令都是以;分号结束
- 3“#”作为注释
- 4尽量少用中文
- 5看是否正确 nginx -t
6:查看日志(请求信息)
2:查看错误日志
cd /usr/local/nginx/logs
cat error.logs
六:解决缓存的三种设置
1. 设置浏览器为无痕模式
2. 在检查里面设置(在当前网页鼠标右键,点击检查)
3. 在linux输入一下命令查看(不存在缓存问题,但只使用于小页面)
curl http://master:81
七:nginx配置文件使用
这里修改这些的前提得必须在nginx主配置文件中利用
include 命令引入
1:nginx修改根目录
server {
listen 81;
server_name localhost master;
location / {
root /tmp/html;
##这里修改到tmp目录下,应为这个目录nobody可以访问,/root目录下就不能访问成功,这里由于nobody权限比较小,不能访问/root下的文件
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
结果
2:nginx 配置 autoindex
当我们想要代理一个文件夹下的多个项目时,我们需要在location里面加入autoindex配置项,autoindex的含义如下:
autoindex表示自动创建索引列表,拥有on、off两个参数,其中on表示打开,off表示关闭
示例:当我们设置:autoindex on;我们能够访问到下面代理成功的图片:
编辑autoindex .conf
server {
listen 81;
server_name localhost master;
location / {
root /tmp/html;
autoindex on;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
结果
3:反向代理
反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。
编辑proxy_pass.conf
server {
listen 81;
server_name localhost master;
location / {
#默认拦截81/下的所有请求
proxy_pass http://192.168.137.3:8080/; # 代理到tomcat服务器首页;
# index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
结果
4:静态资源代理
对于一些静态资源,可以不用tomcat去处理,用nginx强大的处理静态资源文件的功能即可,那么在上面的配置中加上如下配置即可:
location /image/ {
alias /tmp/image/;
}
验证结果
八:搭建nginx负载均衡
1:拉取两个Tomcat镜像(模拟了两个tomcat服务器)
docker pull tomcat:8.0 --8.0和8不是一个东西
docker pull tomcat:9
2:启动容器
docker run -itd -p8080:8080 --name tomcat8 tomcat:8.0
docker run -itd -p8081:8080 --name tomcat9 tomcat:9
3:创键upstream.conf配置文件
##新建负载均衡文件
upstream backend
{
##server服务地址 weight代表权重:1-10
##weight Nginx根据weight配置把请求更多地分发到高配置的后端服务器上,把相对较少的请求分发到低配服务器
server 192.168.137.3:8080 weight=1;
server 192.168.137.3:8081 weight=2;
## weight 权重 值越大表示服务器分配的越多的请求
## 轮询模式
##如果配置了down 则该配置不生效
##server 192.168.1.107:8001 weight=2 down;
##ip_hash 每个请求按访问ip的hash结果分配,保证连接到固定的负载服务器上,这种方式可以解决session问题
#ip_hash;
}
server {
listen 82;
#server_name localhost master;注意空格
server_name localhost master;
location / {
#这里改成backend
proxy_pass http://backend;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
4:验证结果
在一个端口下向不同服务器发送请求,从而实现了负载均衡的效果