[译] 如何在 Rocky Linux 9 上安装 Nginx
Nginx是世界上最受欢迎的网络服务器之一,负责托管互联网上一些最大和流量最高的网站。这是一个轻量级的选择,可以用作 Web 服务器或反向代理。
在本文中,将了解如何在 Rocky Linux 9 服务器上安装 Nginx、调整防火墙、管理 Nginx 进程以及设置服务器代码以从一台服务器托管多个域名和服务的访问。
Nginx是世界上最受欢迎的网络服务器之一,负责托管互联网上一些最大和流量最高的网站。这是一个轻量级的选择,可以用作 Web 服务器或反向代理。
在本文中,将了解如何在 Rocky Linux 9 服务器上安装 Nginx、调整防火墙、管理 Nginx 进程以及设置服务器代码以从一台服务器托管多个域名和服务的访问。
原文地址 : NGINX : Block Known Bad Requests - RewriteGuide
阻止对服务器上不支持的文件扩展名的请求。例如,在仅支持 PHP 的服务器上
.asp
或.jsp
的请求。可以帮助防止网站/应用程序因无效请求而过载。
强制 使用小写的 url,这对于SEO避免重复内容惩罚尤其重要。在基于 windows 的服务器上更应该如此,因为 windows 默认情况下不区分大小写。对于良好的架构SEO来说,大小写混合的 url 重定向到标准化小写的 url 是非常有必要的
原文地址 : NGINX: Add Client-side Caching for Static Assets- RewriteGuide
向浏览器发送缓存指令,这些指令将用于在客户端缓存静态资源。将对网站页面加载的感知速度产生明显影响,因为这些静态资产在浏览器缓存中存在时不会向 Web服务器 发送新请求
让浏览器缓存 30 天资源, 可以使用以下代码块
阻止特定的用户 agent 头的请求, 这对于控制不同的蜘蛛很有用
如果基于 user-agent 请求, 以下代码会比较有用
这里仅仅是对 Broti 算法进行简要的对比和描述, 不涉及到实际使用
在web应用中,为了节省流量,降低传输数据大小,提高传输效率,常用的压缩方式一般都是gzip,今天我们来介绍另外一种更高效的压缩方式brotli。
Brotli 是基于LZ77算法的一个现代变体、霍夫曼编码和二阶上下文建模。Google软件工程师在2015年9月发布了包含通用无损数据压缩的Brotli增强版本,特别侧重于HTTP压缩。
注意:使用算法的前提是启用了 https,因为 http 请求中 request header 里的 Accept-Encoding: gzip, deflate 是没有 br 的。
关于Brotli 算法详细请查看:https://zh.wikipedia.org/wiki/Brotli
网站的性能部分取决于用户浏览器下载的所有文件的大小。减小这些传输文件的大小可以使网站更快。对于那些在按流量计费的连接上支付带宽使用费的人来说,它还可以使网站成本更低。gzip
是一种流行的数据压缩程序。可以配置 Nginx 用于动态压缩它提供的文件。然后,这些文件在使用时由支持它的浏览器解压缩,没有任何损失,但可以在Web服务器和浏览器之间传输更少的数据量。好消息是,所有主流浏览器都支持
由于压缩的一般工作方式,某些文件压缩得比其他文件更好。例如,文本文件压缩得很好,通常最终会缩小两倍以上。另一方面,JPEG或PNG文件等图像已经按其性质进行了压缩,并且使用二次压缩很少或根本没有结果。另外压缩文件会耗费服务器资源,所以只压缩可以压缩的文件。
Nginx实现资源压缩的原理是通过 ngx_http_gzip_module
模块拦截请求,并对需要做 gzip 的类型做 gzip,ngx_http_gzip_module 是Nginx默认集成的,不需要重新编译,直接开启
这里仅仅对获取到的header 进行解析学习, 方便我们做最少的配置和最优化的服务器配置 , 首先贴出来我们的一个拓扑结构
我们仅仅在防护及设置host, 其他均不设置, 并且在服务机打印所有的 header 信息
当前存在的问题是加载页面时间过长
当前服务器拓扑结构如下
ngx_http_stub_status_module
模块提供访问的基础信息
该模块不是默认构建的,应该使用配置参数 --with-http_stub_status_module
启用
nginx-http-concat 是一个 Nginx 扩展模块,用来合并 HTTP 请求。
未优化之前的连接数 NotEstablished 的数量到达了一定的峰值, 然后处于持平状态, 在这个时候服务器日志会报 500 错误
这个地方考虑到的可能性是链接数过多导致的服务器
/etc/sysctl.conf
原文地址 : 利用 nginx 来屏蔽指定的 user_agent 的访问
对于做国内站的我来说,我不希望国外蜘蛛来访问我的网站,特别是个别垃圾蜘蛛,它们访问特别频繁。这些垃圾流量多了之后,严重浪费服务器的带宽和资源。通过判断 user agent,在 nginx 中禁用这些蜘蛛可以节省一些流量,也可以防止一些恶意的访问。
1、进入 nginx 的配置目录,例如 cd /usr/local/nginx/conf
2、添加 agent_deny.conf
配置文件 vim agent_deny.conf
加入以下
https://jelly.jd.com/article/6006b1045b6c6a01506c87b5
Chrome 浏览器地址栏标志着 HTTPS 的绿色小锁头从心理层面上可以给用户专业安全的心理暗示,本文简单总结一下如何在 Nginx 配置 HTTPS 服务器,让自己站点上『绿锁』。
Nginx 配置 HTTPS 并不复杂,主要有两个步骤:签署第三方可信任的 SSL 证书 和 配置 HTTPS
通过查看 nginx 编译参数可以知道当前 nginx 支持的模块, 从而知道支持那些功能
安装 Nginx 时可以选择配置文件的路径,由于 Nginx 程序后续可能会升级版本,但配置基本上就是一份,那么推荐使用配置和程序分离的方式,遵循:
如:
OpenResty® 是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。
OpenResty® 通过汇聚各种设计精良的 Nginx 模块(主要由 OpenResty 团队自主开发),从而将 Nginx 有效地变成一个强大的通用 Web 应用平台。这样,Web 开发人员和系统工程师可以使用 Lua 脚本语言调动 Nginx 支持的各种 C 以及 Lua 模块,快速构造出足以胜任 10K 乃至 1000K 以上单机并发连接的高性能 Web 应用系统。
OpenResty® 的目标是让你的 Web 服务直接跑在 Nginx 服务内部,充分利用 Nginx 的非阻塞 I/O 模型,不仅仅对 HTTP 客户端请求,甚至于对远程后端诸如 MySQL、PostgreSQL、Memcached 以及 Redis 等都进行一致的高性能响应。
详细文档参考 : https://openresty.org/cn/
有的时候,我们需要配置一些自定义的子域名,如:
xuexb.user.demo.com
a01.user.demo.com
这时候就需要域名的 DNS 解析一个泛域名 *.user.demo.com
到服务器,Nginx 可以配置如下:
PV(Page View):即页面浏览量或者点击量,用户每一次对网站中每个页面访问均记录 1 个 PV。用户对同一页面的多次访问,访问量累积。
UV(Unique Visitor):指通过互联网浏览这个网页的人,电脑称为一个访客、手机也称为一个访客,一天之内相同的客户端只能被计算一次。
IP(Internet Protocol):指独立 IP 访问站点的 IP 总数,一天内相同 IP 只能算一次。
VV(Visit View):指所有访客一天内访问网站的次数,当访客完成所有浏览并最终关闭网站的所有页面时变完成了一次访问,同一访客一天内可能有多次访问行为,访问次数累积。
接下来看一下 Nginx 的配置文件:
/etc/nginx/nginx.conf
再看一下 access.log:
/var/log/nginx/access.log
access.log 文件里面的remote_user…等
查看各个访问量:
1.根据访问 IP 统计 UV
logrotate 程序是一个日志文件管理工具。用于分割日志文件,删除旧的日志文件,并创建新的日志文件,起到“转储”作用
这里参考另一篇文章 [转+] 运维中的日志切割(logrotate)操作梳理
Nginx echo 模块是在 nginx 程序上扩展了 echo
输出字符的功能,对于调试很方便,项目地址: https://github.com/openresty/echo-nginx-module 。
你的网站可能有多个域名访问,比如:www.wulicode.com
、wulicode.com
等,设置主域意思是不管用户输入哪个域名,都会 301
重定向到主域上,设置主域可以对 SEO 更友好,比如:
说到 Nginx 就不得不说 Nginx 的反向代理是多么的好用,一个指令 proxy_pass
搞定反向代理,对于接口代理、负载均衡很是实用,但 proxy_pass
指令后面的参数很有讲究。
网上有很多什么绝对路径、相对路径的说法,其实在实际的应用中就分为两种情况: