1、Ubuntu服务器中的nginx
ubuntu中的nginx的配置文件
1 | conf.d:用户自己定义的conf配置文件 |
服务器使用nginx
1 | nginx -t #查找配置文件在哪 |
ubuntu中的在 /etc/nginx/nginx.conf

之所以下面修改default文件可以使用是因为这里引入了sites-enable下面的文件,而sites-enable是sites-available拷贝而来,建议在conf.d中创建nginx.conf文件进行配置nginx

1 | root@iZbp1fp1ljg8kt4kwm2nohZ:/# cd /etc/nginx/sites-available/ |
2、Mac中使用nginx
1 | 安装 |
3、配置不同的域名访问项目不需要输入端口方式
第一种:直接配置nginx更改server_name
https://blog.csdn.net/qq_38571996/article/details/83089877
1 | server { |
第二种:https://blog.csdn.net/weixin_42433970/article/details/108012788


4、ssl配置
1 | #以下属性中,以ssl开头的属性表示与证书配置有关。 |
5、nginx 禁止 ip 允许和阻止访问
nginx会根据配置文件中的语句,从上至下依次判断。因此,写在前面的语句可能会屏蔽后续的语句。所以deny和allow顺序需要设置好
https://www.cnblogs.com/niuben/p/11687638.html
在相应的server中增加
1
2
3
4
5
6
7
8allow 12.12.12.22 # 允许访问
deny 223.104.123.12; # 禁止访问
deny 123.0.0.0/8; // 封 123.0.0.1~123.255.255.254 这个段的ip
deny 123.1.0.0/16; // 封 123.1.0.1~123.1.255.254 这个段的ip
deny 123.1.1.0/24; // 封 123.1.1.1~123.1.1.254 这个段的ip
deny all; // #除allow的IP地址外,其他的IP地址都禁止访问也可以使用文件的形式增加ip的访问访问权限
创建 allow_deny_ip.conf 文件,增加deny all
server中增加
1
include /etc/nginx/allow_deny_ip.conf;
6、自定义403等页面
https://blog.csdn.net/weixin_34249367/article/details/92101696
在 /etc/nginx 中创建 error_index 文件夹

在nginx的配置文件中增加
1 | error_page 403 = /403.html; |
或者是增加 error_page 403 http://39.103.149.176:9999/; 指定网页中的链接,可以在指定的页面中设置修改配置文件allow_deny_ip.conf中的ip,动态修改ip的访问权限,例如将禁止访问的ip去掉后就可以进行访问了

有无等号的区别,建议使用等号: https://www.cnblogs.com/redirect/p/10066761.html
error_page 404 /404.html 可显示自定义404页面内容,正常返回404状态码。
error_page 404 = /404.html 可显示自定义404页面内容,但返回200状态码。
7、nginx413文件上传失败
参考:https://blog.csdn.net/z69183787/article/details/83070275
1 | client_max_body_size 50m; #文件大小限制,默认1m |
client_max_body_size
限制请求体的大小,若超过所设定的大小,返回413错误。
client_header_timeout
读取请求头的超时时间,若超过所设定的大小,返回408错误。
client_body_timeout
读取请求实体的超时时间,若超过所设定的大小,返回413错误。
proxy_connect_timeout
http请求无法立即被容器(tomcat, netty等)处理,被放在nginx的待处理池中等待被处理。此参数为等待的最长时间,默认为60秒,官方推荐最长不要超过75秒。
proxy_read_timeout
http请求被容器(tomcat, netty等)处理后,nginx会等待处理结果,也就是容器返回的response。此参数即为服务器响应时间,默认60秒。
proxy_send_timeout
http请求被服务器处理完后,把数据传返回给Nginx的用时,默认60秒。
8、负载均衡
当一台服务器的单位时间内的访问量越大时,服务器压力就越大,大到超过自身承受能力时,服务器就会崩溃。为了避免服务器崩溃,让用户有更好的体验,我们通过负载均衡的方式来分担服务器压力。我们可以建立很多很多服务器,组成一个服务器集群,当用户访问网站时,先访问一个中间服务器,在让这个中间服务器在服务器集群中选择一个压力较小的服务器,然后将该访问请求引入该服务器。如此以来,用户的每次访问,都会保证服务器集群中的每个服务器压力趋于平衡,分担了服务器压力,避免了服务器崩溃的情况。负载均衡配置一般都需要同时配置反向代理,通过反向代理跳转到负载均衡。
1 | upstream mysvr { |
五种实现方式
轮询(默认)
轮询方式是Nginx负载默认的方式,顾名思义,所有请求都按照时间顺序分配到不同的服务上,如果服务Down掉,可以自动剔除,如下配置后轮训10001服务和10002服务。
1
2
3
4upstream dalaoyang-server {
server localhost:10001;
server localhost:10002;
}权重weight
指定每个服务的权重比例,weight和访问比率成正比,通常用于后端服务机器性能不统一,将性能好的分配权重高来发挥服务器最大性能,如下配置后10002服务的访问比率会是10001服务的二倍。
1
2
3
4upstream dalaoyang-server {
server localhost:10001 weight=1;
server localhost:10002 weight=2;
}ip_hash(解决session问题)
每个请求都根据访问ip的hash结果分配,经过这样的处理,每个访客固定访问一个后端服务,如下配置(ip_hash可以和weight配合使用)。
上述方式存在一个问题就是说,在负载均衡系统中,假如用户在某台服务器上登录了,那么该用户第二次请求的时候,因为我们是负载均衡系统,每次请求都会重新定位到服务器集群中的某一个,那么已经登录某一个服务器的用户再重新定位到另一个服务器,其登录信息将会丢失,这样显然是不妥的*。
我们可以采用*ip_hash**指令解决这个问题,如果客户已经访问了某个服务器,当用户再次访问时,会将该请求通过哈希算法,自动定位到该服务器*。
每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题***。1
2
3
4
5upstream dalaoyang-server {
ip_hash;
server localhost:10001 weight=1;
server localhost:10002 weight=2;
}最少连接
将请求分配到连接数最少的服务上。
1
2
3
4
5upstream dalaoyang-server {
least_conn;
server localhost:10001 weight=1;
server localhost:10002 weight=2;
}fair
按后端服务器的响应时间来分配请求,响应时间短的优先分配。
1
2
3
4
5upstream dalaoyang-server {
server localhost:10001 weight=1;
server localhost:10002 weight=2;
fair;
}
9、正向代理与反向代理
什么代理
代理其实就是一个中介,A和B本来可以直连,中间插入一个C,C就是中介。
正向代理
正向代理类似一个跳板机,代理访问外部资源
比如我们国内访问谷歌,直接访问访问不到,我们可以通过一个正向代理服务器,请求发到代理服,代理服务器能够访问谷歌,这样由代理去谷歌取到返回数据,再返回给我们,这样我们就能访问谷歌了


正向代理的用途:
- 访问原来无法访问的资源,如google
- 可以做缓存,加速访问资源
- 对客户端访问授权,上网进行认证
- 代理可以记录用户访问记录(上网行为管理),对外隐藏用户信息
总结一下,用最简单粗暴的说法:「正向代理」指一对一或多对一,Server 不知道请求的 Client 都是哪些人。
反向代理
反向代理隐藏了真实的服务端,当我们请求 http://www.baidu.com 的时候,背后可能有成千上万台服务器为我们服务,但具体是哪一台,你不知道,也不需要知道,你只需要知道反向代理服务器是谁就好了,http://www.baidu.com 就是我们的反向代理服务器,反向代理服务器会帮我们把请求转发到真实的服务器那里去。


总结
| 区别 | 正向代理 | 反向代理 |
|---|---|---|
| 代理的对象 | 客户端 | 服务端 |
| 关系 | 一对一或一对多 | 一对多或多对多 |
| 说明 | 正向代理即是客户端代理, 代理客户端, 服务端不知道实际发起请求的客户端. | 反向代理即是服务端代理, 代理服务端, 客户端不知道实际提供服务的服务端 |
10、常用配置
https://www.runoob.com/w3cnote/nginx-setup-intro.html
1 | ########### 每个指令必须有分号结束。################# |
gzip压缩
gzip压缩作用:将响应报⽂发送⾄客户端之前可以启⽤压缩功能,这能够有效地节约带宽,并提⾼响应⾄客户端的速度,压缩会消耗nginx的cpu性能
1 | server { |
11、Nginx与Tengine
Tengine是由淘宝网发起的Web服务器项目。它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性。Tengine的性能和稳定性已经在大型的网站如淘宝网,天猫商城等得到了很好的检验。它的最终目标是打造一个高效、稳定、安全、易用的Web平台。
原来是淘宝网发起的,这么了解也可以认为淘宝网在nginx的二次开发才是,那么淘宝网为什么要二次开发呢?原因是:针对大访问量网站的需求,并且更加的稳定,性能更加的强大!看到这么些话有没有心动的感觉?
区别在写一下:nginx和tengine的区别是:
1、tengine是在nginx上面开发的,包含了nginx的性能。
2、tengine更适合大访问量网站的需求,相比nginx更加的稳定,性能更加的强劲。
据网络测试:
Tengine相比Nginx默认配置,提升200%的处理能力。
Tengine相比Nginx优化配置,提升60%的处理能力。
