nginx入门 --- 反向代理,负载均衡的概念,基本配置文件
1、Nginx是什么?
Nginx是lgor Sysoev为俄罗斯访问量第二的rambler.ru站点设计开发的。从2004年发布至今,凭借开源的力量,已经接近成熟与完善。
Nginx功能丰富,可作为HTTP服务器,也可作为反向代理服务器,邮件服务器。支持FastCGI、SSL、Virtual Host、URL Rewrite、Gzip等功能。并且支持很多第三方的模块扩展。
Nginx的稳定性、功能集、示例配置文件和低系统资源的消耗让他后来居上,在全球活跃的网站中有12.18%的使用比率,大约为2220万个网站。
2、Nginx的作用
2.1 反向代理
首先记住:正向代理客户端,反向代理服务端
在说反向代理之前,先说一下正向代理。
-
正向代理:
-
就是用在客户端的,提供一个代理服务器访问点,例如vpn。我们如果想访问某些外国网站,用国内的网络直接连不上就需要一个代理服务器。
-
我们在客户端装上vpn,就能先访问代理服务器,让代理服务器帮我们访问外网获取访问的信息,返还给我们客户端
-

-
-
反向代理
- 用于服务器端,现在市面上的大型项目都会有很多台服务器,但是用户访问时访问的一直都是一个页面或者说一个域名(比如www.baidu.com),这时候就需要一个中间件来对用户的请求进行转发
- 用户的请求就可以通过nginx对应转发到后端其中一个服务器中进行处理

2.2 负载均衡
nginx提供负载均衡的策略有两种:内置策略和扩展策略
- 内置策略
- 轮询:
- 用户的请求通过nginx对每个服务器依次访问
- 加权轮询:
- 可以给服务器加权重,如果一台服务器性能比较好,那可以给它的权重更大,处理更多请求
- ip hash:
- 对用户的ip有对应的算法,每个ip固定分发到同一台服务器上去,可以解决session不共享的问题
- 轮询:
- 扩展策略
- 自定义算法实现负载均衡
拓展:上述提到的session不共享,更好的解决方案是用redis
3、Nginx安装
参考自:https://www.kuangstudy.com/bbs/1353634800149213186
3.1 Windows环境下安装
直接上官网:http://nginx.org/en/,找到download

下载完解压即用

启动方式:
- 运行nginx.exe一键启动
- 打开cmd切换到当前目录运行
nginx.exe启动
检测是否代理成功:
nginx默认的nginx.conf文件里监听80端口,直接查看localhost:80,发现代理成功

关闭方式:
nginx -s stop #强制退出
nginx -s quit #安全退出taskkill /f /t /im nginx.exe
#taskkill是用来终止进程的,/f是强制终止 ./t终止指定的进程和任何由此启动的子进程。/im示指定的进程名称 .
3.2 Linux下安装
先贴上官网http://nginx.org/en/linux_packages.html
-
安装gcc(如果没有gcc环境)
yum install gcc-c++
-
PCRE pcre-devel安装
- PCRE(Perl Compatible Regular Expressions) 是一个Perl库,包括 perl 兼容的正则表达式库。nginx 的 http 模块使用 pcre 来解析正则表达式,所以需要在 linux 上安装 pcre 库,pcre-devel 是使用 pcre 开发的一个二次开发库。nginx也需要此库。命令:
yum install -y pcre pcre-devel
-
zlib安装
- zlib 库提供了很多种压缩和解压缩的方式, nginx 使用 zlib 对 http 包的内容进行 gzip ,所以需要在 Centos 上安装 zlib 库。
yum install -y zlib zlib-devel
-
OpenSSL 安装
- OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及 SSL 协议,并提供丰富的应用程序供测试或其它目的使用。
nginx 不仅支持 http 协议,还支持 https(即在ssl协议上传输http),所以需要在 Centos 安装 OpenSSL 库。 yum install -y openssl openssl-devel
- OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及 SSL 协议,并提供丰富的应用程序供测试或其它目的使用。
-
下载安装包上传后解压
tar -zxvf nginx-1.18.0.tar.gz cd nginx-1.18.0 -
配置安装。查找路径
./configure make make install whereis nginx
3.3 Nginx常用命令
cd /usr/local/nginx/sbin/
./nginx 启动
./nginx -s stop 停止
./nginx -s quit 安全退出
./nginx -s reload 重新加载配置文件
ps aux|grep nginx 查看nginx进程
防火墙相关命令
# 开启
service firewalld start
# 重启
service firewalld restart
# 关闭
service firewalld stop
# 查看防火墙规则
firewall-cmd --list-all
# 查询端口是否开放
firewall-cmd --query-port=8080/tcp
# 开放80端口
firewall-cmd --permanent --add-port=80/tcp
# 移除端口
firewall-cmd --permanent --remove-port=8080/tcp
#重启防火墙(修改配置后要重启防火墙)
firewall-cmd --reload
# 参数解释
1、firwall-cmd:是Linux提供的操作firewall的一个工具;
2、--permanent:表示设置为持久;
3、--add-port:标识添加的端口;
4、Nginx配置文件
参考自:https://www.runoob.com/w3cnote/nginx-setup-intro.html
4.1 Nginx文件结构
... #全局块events { #events块...
}http #http块
{... #http全局块server #server块{ ... #server全局块location [PATTERN] #location块{...}location [PATTERN] {...}}server{...}... #http全局块
}
- 1、全局块:配置影响nginx全局的指令。一般有运行nginx服务器的用户组,nginx进程pid存放路径,日志存放路径,配置文件引入,允许生成worker process数等。
- 2、events块:配置影响nginx服务器或与用户的网络连接。有每个进程的最大连接数,选取哪种事件驱动模型处理连接请求,是否允许同时接受多个网路连接,开启多个网络连接序列化等。
- 3、http块:可以嵌套多个server,配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置。如文件引入,mime-type定义,日志自定义,是否使用sendfile传输文件,连接超时时间,单连接请求数等。
- 4、server块:配置虚拟主机的相关参数,一个http中可以有多个server。
- 5、location块:配置请求的路由,以及各种页面的处理情况。
4.2 一个简单的Nginx配置详解
upstream abc{server 127.0.0.1:8080 weight=1;server 127.0.0.1:8081 weight=1;
}server {listen 80;server_name localhost;location / {proxy_pass http://abc;}
}
如图:
-
upstream配置后台代理的几台服务器,weight是权重
-
server监听80端口
- proxy_pass:需要走哪个代理,http://xxx 中的xxx和upstream xxx 保持一致,可以随便取名
location /代表根目录下的请求,则上面代表根目录下的请求就会被upstream abc代理
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
