写给后端的Nginx初级入门教程( 二 )


按照功能划分,我们通常将nginx配置文件分为三大块,全局块,events块,http块 。
3.1 第一部分:全局块
首先映入眼帘的这一堆:
user nginx;worker_processes auto;error_log /var/log/nginx/error.log;pid /run/nginx.pid;# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.include /usr/share/nginx/modules/*.conf;我们称之为全局块,知识点呐朋友们,要记住,这里呢,主要会设置一些影响 nginx 服务器整体运行的配置指令,主要包括配 置运行 Nginx 服务器的用户(组)、允许生成的 worker process 数,进程 PID 存放路径、日志存放路径和类型以及配置文件的引入等 。
比如 worker_processes auto; 这一行,worker_processes 值越大,我们nginx可支持的并发数量就越多,很多人想这不就爽了吗,我设置成正无穷,无限并发flag达成,秒杀问题轻松解决,这个,受自己服务器硬件限制的,不能乱来 。
3.2 第二部分:events 块
events { worker_connections 1024;}这一堆,就是我们配置文件的第二部分,events 块
起名字这么随意的么,那第三部分是不是叫http块?
wc,这你都知道,是的
events 块涉及的指令主要影响 Nginx 服务器与用户的网络连接,常用的设置包括是否开启对多 work process 下的网络连接进行序列化,是否允许同时接收多个网络连接,选取哪种事件驱动模型来处理连接请求,每个 word process 可以同时支持的最大连接数等 。
3.3 第三部分:http块
内容太多,略
http { server { }}

注意:
http是一个大块,里面也可以包括很多小块,比如http全局块,server块等 。
http 全局块配置的指令包括文件引入、MIME-TYPE 定义、日志自定义、连接超时时间、单链接请求数上限等 。
而http块中的server块则相当于一个虚拟主机,一个http块可以拥有多个server块 。
server块又包括全局server块,和location块 。
全局server块主要包括了本虚拟机主机的监听配置和本虚拟主机的名称或 IP 配置
location块则用来对虚拟主机名称之外的字符串进行匹配,对特定的请求进行处理 。地址定向、数据缓 存和应答控制等功能,还有许多第三方模块的配置也在这里进行 。比如,对/usr相关的请求交给8080来处理,/admin则较给8081处理 。
说了这么多,我还是不是特别理解咋办,问题不大,接下来我们通过几个实例来帮助大家更好的理解这些配置在实际中所发挥的作用 。
04 Nginx配置实战接下来我们将通过对nginx配置文件的修改来完成反向代理,负载均衡,动静分离的简单配置 。
4.1 nginx配置反向代理
我发现很多教程说nginx配置反向代理的时候上来就改host文件,这里的话,因为上一篇文章我们有总结过反向代理的精髓,也就是:
反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实服务器 IP 地址 。
所以接下来我们通过一个小栗子,当我们访问服务器的时候,由于我的服务器没备案,阿里云默认80端口没开,所以这里我们设置对外服务的端口为8888,当我们访问8888端口的时候,实际上是跳转到8080端口的 。
首先我们用docker启动一个tomcat容器,然后配置端口映射为8080 。
等等,不会docker怎么办?不会docker的话,可以看韩数最新的docker初级入门教程(滑稽)
如果对docker不是很了解的话,可以使用传统的linux下运行tomcat,道理是一样的 。
然后修改我们的配置文件nginx.conf里面的server块,修改之后的内容如下:
server { listen 8888 ; ##设置我们nginx监听端口为8888 server_name [服务器的ip地址]; # Load configuration files for the default server block. include /etc/nginx/default.d/*.conf; location / { proxy_pass http://127.0.0.1:8080; ##需要代理的服务器地址 index index.html; } error_page 404 /404.html; location = /40x.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } }然后在浏览器中输入:服务器ip:8888 发现浏览器显示出来了8080端口tomcat的欢迎界面,从而实现了隐藏真实服务器地址这样一个反向代理的要求 。
哦?看着好神奇哦,那,我之前经常有看到那种,就是各种/image /video 不同的链接对应的是不同的网站,那也是这么做的咯?
聪明,这里我们再新建一个tomcat容器,端口为8081,同时把在容器中tomcat webapps目录新建一个我们自己的目录,这里叫hello,里面新建一个hello.html文件,内容为
<h1>I am Hello<h1>同时我们在端口为8080的tomcat容器中,在webapps新建我们的文件家hi,并新建hi.html文件,内容为


推荐阅读