目录
- Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。
- 其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好
- Nginx 是一个安装非常的简单、配置文件非常简洁(还能够支持perl语法)、Bug非常少的服务。Nginx 启动特别容易,并且几乎可以做到7*24不间断运行,即使运行数个月也不需要重新启动。
- Nginx代码完全用C语言从头写成。官方数据测试表明能够支持高达 50,000 个并发连接
- 数的响应。
代理作为web服务器最常用的功能之一,尤其是反向代理。
代理是代理服务器的,所以用户是无感知的,比如,百度的服务器是在不同的服务器上,我们只需要搜索baidu.com就行
Nginx提供的负载均衡策略有2种:内置策略和扩展策略。内置策略为轮询,加权轮询,Ip hash。扩展策略,就天马行空,非常强大。
在我们的软件开发中,有些请求是需要后台处理的,有些请求是不需要经过后台处理的(如:css、html、jpg、js等等文件),这些不需要经过后台处理的文件称为静态文件。让动态网站里的动态网页根据一定规则把不变的资源和经常变的资源区分开来,动静资源做好了拆分以后,我们就可以根据静态资源的特点将其做缓存操作。提高资源响应的速度。
这里使用ubuntu直接apt安装命令即可:
sudo apt install nginx
其中配置文件在 /etc/nginx/ 目录下
- 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
- firwall-cmd:是Linux提供的操作firewall的一个工具;
- –permanent:表示设置为持久;
- –add-port:标识添加的端口;
配置文件 为nginx.conf ,其中nginx.conf 的注释符号为: #
- ... #全局块
-
- events { #events块
- ...
- }
-
- http #http块
- {
- ... #http全局块
- server #server块
- {
- ... #server全局块
- location [PATTERN] #location块
- {
- ...
- }
- location [PATTERN]
- {
- ...
- }
- }
- server
- {
- ...
- }
- ... #http全局块
- }
- 全局块:配置影响nginx全局的指令。一般有运行nginx服务器的用户组,nginx进程pid存放路径,日志存放路径,配置文件引入,允许生成worker process数等。
- events块:配置影响nginx服务器或与用户的网络连接。有每个进程的最大连接数,选取哪种事件驱动模型处理连接请求,是否允许同时接受多个网路连接,开启多个网络连接序列化等。
- http块:可以嵌套多个server,配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置。如文件引入,mime-type定义,日志自定义,是否使用sendfile传输文件,连接超时时间,单连接请求数等。
- server块:配置虚拟主机的相关参数,一个http中可以有多个server。
- location块:配置请求的路由,以及各种页面的处理情况。
假设我们有一个域名 www.example.com , 有两台服务器作为负载服务器,反向代理配置:
- http {
- ...
-
- upstream mysvr {
- server 192.168.0.1:8080;
- server 192.168.0.2:8080;
- }
-
- server {
- # 监听端口
- listen 80
- # 域名
- server_name = www.example.com
-
- # 匹配 URL
- location / {
- # 网站根目录
- root /var/www/html;
- # 网站的默认首页
- index index.html index.htm index.jsp;
- # 被代理服务器的地址,可以是主机名称、IP地址加端口号的形式
- proxy_pass http://mysvr; #请求转向mysvr 定义的服务器列表
- }
-
- ...
- }
-
- }
这样就把 http://www.example.com:80 的访问分配到192.168.0.1和192.168.0.2这两台服务器的8080端口中,这就是反向代理。