nginx 对于服务器来说有很多好处,比如:
- 反向代理,保护正常服务器安全
- 负载均衡,可以有效的分配服务器集群
- 可以做 gzip 压缩
- 可以添加缓存
我作为一个前端,正在努力学习向大前端进发,所以必须要掌握一些常规的 nginx 操作。
1. 安装
1.1 mac 上安装
mac 上直接使用 brew 安装即可,brew install nginx。安装之后可以到 /usr/local/etc/nginx 目录下找到 nginx.conf 进行配置的修改。
使用 brew 安装的 nginx,具体的几个配置都在下面:
nginx 的配置文件路径:/usr/local/etc/nginx/nginx.conf nginx 的服务器页面默认路径:/usr/local/var/www nginx 的安装路径:/usr/local/Cellar/nginx/1.15.5
1.2 Linux 上的安装
linux 上的安装,建议看一下菜鸟教程,跟着教程走下来,就 OK 了。
注意:
根据菜鸟教程安装的 nginx,他的安装目录是在 /usr/local/webserver/nginx 这个目录下。后续我们会用到这个目录。
2. nginx 常用命令
nignx 主要是通过配置去实现功能,但是常用的启动,重启,停止命令我们还是要知道的。
nginx # 启动nginx
nginx -s reload # 重新载入配置文件
nginx -s reopen # 重启 nginx
nginx -s stop # 停止 nginx
在 mac 上使用 brew 安装好之后,可以直接使用 nginx 的命令启动 nginx。
但是在 linux 上安装好之后我们不能直接通过 nginx 进行操作,我们需要到 /usr/local/webserver/nginx/sbin/ 这个目录下然后执行命令。
3. 开始配置
我们想要修改 nginx 的配置,首先要找到 nginx.conf 所在的位置。并且对 nginx.conf 有一定的了解。首先看看 nginx.conf 所在的位置:
修改 nginx.conf:
mac 上的位置在 /usr/local/etc/nginx/nginx.conf,Linux 如果按照菜鸟教程安装的,位置在 /usr/local/webserver/nginx/conf/nginx.conf。
修改启动页面:
如果想要修改 nginx 的启动页面,mac 可以到 /usr/local/var/www 下修改,Linux 到 /usr/local/webserver/nginx/html 下修改 index.html 就可以。
nginx 的内容大致分为以下几块:
#全局块
#worker_processes 2; # 允许生成的进程数,默认是1
#pid /nginx/pid/nginx.pid; # 指定nginx进程运行文件存放地址
error_log log/error.log debug; # 指定日志输出路径
events { # events 块
worker_connections 1024; # 最大连接数
...
}
http { # http 块
... # http全局块
server { # server 块
... # server 全局块
listen 9090; # 请求端口
server_name localhost; # 请求域名
location [PATTERN] { # location 块
...
root html; # 文件根目录
index index.html index.htm; # 设置访问页
deny 127.0.0.1; # 拒绝的ip
allow 172.18.5.54; # 允许的ip
}
location [PATTERN] {
...
}
}
server {
...
}
upstream [NAME] { # 代理服务器负载均衡组
...
}
... # http全局块
}
- 全局块:配置影响 nginx 全局的指令。一般有运行 nginx 服务器你的用户组,nginx 进程 pid 存放路径,日志存放路径,配置文件引入,允许生成 worker process 数等。
- events 块:配置影响 nginx 服务器或与用户的网络连接。有每个进程的最大连接数,选取哪种事件驱动模型处理连接请求,是否允许同时接受多个网络连接,开启多个网络连接序列化等。
- http 块:可以配置多个 server,配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置。如文件引入,mini-type 定义,日志自定义,是否使用 sendfile 传输文件,连接超时时间,单连接请求数等。
- server 块:配置虚拟主机的相关参数,一个 http 中可以有多个 server。
- location 块:配置请求的路由,以及各种页面的处理情况。
- upstream 块:主要配置代理服务器组,包括负载均衡的配置。
配置如果不是很理解,可以接着往下走,给自己的服务器配置一下 nginx,尝试一下就豁然开朗了。
3.1 反向代理与负载均衡
找到 nginx.conf,在 server 中配置路由。
server {
listen 9090;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
proxy_pass http://tomcats;
}
}
proxy_pass 就是指该路由具体转发到哪个服务器组,我们这里设置了一个名叫 tomcats 组,在 server 同级的添加一个 upstream 模块,模块名就叫 tomcats,模块里面配置要转发到哪个 ip 服务器上,可以配置多个,多个 IP 如果不设置分配策略的话,会默认轮询分配。
这样就实现了反向代理和负载均衡了,nginx 代理了自己的服务器,到指定的几个 IP 服务器下,然后服务器均衡分配访问过来的流量。
upstream tomcats {
server 192.168.100.100:8080;
server 192.168.100.101;
server example.com:8080;
}
我们也可以给每个 server 设置不同的分配策略。
upstream tomcats {
server 192.168.100.100:8080 weight=2; # 2/6次
server 192.168.100.101 weight=3; # 3/6次
server example.com:8080 weight=1; # 1/6次
}
如下图,左侧为没有配置加权的轮询,右侧为配置了加权之后的轮询,会根据加权数去进行分配。
3.2 配置 ip 缓存
我们可以使用 ip_hash 来给每个访问的 ip 进行结果分配,就是一个 ip 访问之后,后续它的访问都会固定打到同一个机器上,这样有利于解决 session 不共享的问题。
配置很简单:
upstream tomcats {
ip_hash;
server 192.168.100.100:8080;
server 192.168.100.101;
server example.com:8080;
}
配置之后如下:
nginx 还可以开启 gzip 压缩
在编辑的时候,搜索 gzip,就可以找到对应的配置信息了,默认是被注释的,也就是关闭的。我们将注释关掉就可以了。
阅读完后两部曲
- 喜欢的小伙伴点个赞吧,感觉对身边人有帮助的,麻烦动动手指,分享一下。非常感谢各位花时间阅读完,同时很感谢各位的点赞和分享。
- 希望各位关注一下我的公众号吧,新的文章第一时间发到公众号,公众号主要发一些个人随笔、读书笔记、还有一些技术热点和实时热点,并且还有非常吸引人的我个人自费抽奖活动哦~