【运维面试100问】(十二)你对nginx做过哪些优化?

发布时间:2023年12月21日

??本站以分享各种运维经验和运维所需要的技能为主

《python零基础入门》:python零基础入门学习

《python运维脚本》:?python运维脚本实践

《shell》:shell学习

《terraform》持续更新中:terraform_Aws学习零基础入门到最佳实战

《k8》暂未更新

《docker学习》暂未更新

《ceph学习》ceph日常问题解决分享

《日志收集》ELK+各种中间件

《运维日常》运维日常

《linux》运维面试100问

?你对nginx做过哪些优化?

如何自定义返回给客户端的 404 错误页面
如何查看服务器状态信息
如果客户端访问服务器提示 “Too many open files” 如何解决
如何解决客户端访问头部信息过长的问题
如何让客户端浏览器缓存数据
客户机访问此 Web 服务器验证效果:
使用 ab 压力测试软件测试并发量
编写测试脚本生成长头部信息的访问请求

优化操作:

1.1 优化错误页面
error_page 404 /404.html; //自定义错误页面 ---
vim /usr/local/nginx/html/404.html //生成错误页面 ---自定义
1.2 优化并发量
> --with-http_stub_status_module //开启status状态页面 --加模块
[root@proxy ~]# cat /usr/local/nginx/conf/nginx.conf
… …
location /status {
stub_status on;
[root@proxy ~]# vim /usr/local/nginx/conf/nginx.conf
.. ..
worker_processes 2; //与CPU核心数量一致
events {
worker_connections 65535; //每个worker最大并发连接数
[root@proxy ~]# ulimit -a //查看所有属性值
[root@proxy ~]# ulimit -Hn 100000 //设置硬限制(临时规则)
[root@proxy ~]# ulimit -Sn 100000 //设置软限制(临时规则)
[root@proxy ~]# vim /etc/security/limits.conf
.. ..
soft nofile 100000
hard nofile 100000
#该配置文件分4列,分别如下:
#用户或组 硬限制或软限制 需要限制的项目 限制的值
[root@proxy ~]# ab -n 2000 -c 2000

1.3 优化数据包头缓存
[root@proxy ~]# vim /usr/local/nginx/conf/nginx.conf
.. ..
http {
client_header_buffer_size 1k; //默认请求包头信息的缓存
large_client_header_buffers 4 4k; //大请求包头部信息的缓存个数与容量
----解决URL过长的问题

1.4 优化关于定义对静态页面的缓存时间
location ~* .(jpg|jpeg|gif|png|css|js|ico|xml)$ {
expires 30d; //定义客户端缓存时间为30天
在firefox地址栏内输入about:cache,查看本地缓存数据,查看是否有图片以及过期时间是否正确。
其他的可能会不同,查看本地缓存数据的地址。

1.5 安全优化
一般情况下,我们在编译安装的时候会创建指定nginx来运行程序,但是nginx启动后它的master进程还是root,
为了安全起见,我们要修改它的主进程,改为普通用户。

注意:普通进程就使用普通用户管理就可以,不要任何程序都使用root,一但出问题,很难搞!
检查:ps -ef
1、先创建一个普通用户;
useradd nginx-soft
2、要想使用普通用户运行nginx 必须要将端口80更改,大于1024,此处使用8000;
listen 8000;
index路径修改;
日志文件路径修改;
端口可以使用sudo或者 nat 转换解决;
3、将/home/nginx-soft目录下的logs/conf/html/赋权给nginx-soft这一普通用户;
chown -R nginx-soft *
检查:drwxr-xr-x. 2 nginx-soft root 4096 Sep 11 13:23 conf drwxr-xr-x. 2 nginx-soft root 4096 Sep 11 13:23
html drwxr-xr-x. 2 nginx-soft root 4096 Sep 11 13:30 logs
4、使用root用户指定nginx的配置文件:
../nginx/sbin/nginx -s stop
../nginx/sbin/nginx -c /home/nginx-soft/conf/nginx.conf
5、切换至普通用户的宿主目录下;
将nginx主程序下的配置文件conf、html、logs文件拷贝到普通用户的加目录下;
cp -ap ../nginx1.6.2/conf/ . 
cp -ap ../nginx1.6.2/html/ . 
cp -ap ../nginx1.6.2/logs/ .
#此处注意html、logs、端口文件的配置
6、 切换到nginx-soft普通用户下启动nginx
ps -ef|grep nginx

最后提一下nginx的调度策略:
负载均衡调度算法
LVS 目前实现了 10 种调度算法
常用的调度算法有 4
1. 轮询 (rr); 将客户端请求平均分发到 Real Server
2. 加权轮询 (wrr): 根据 Real Server 权重值进行轮询调度 (-w 后面加的 )
(-w 后面加的数 )
3. 最少连接 (lc): 选择连接数最少的服务器
4. 加权最少连接 (wlc): 根据 Real Server 权重值 , 选择连接数最少的服务器
5. 源地址散列 (SH):
6. 目标地址散列 (DH):
根据不同需求做不同的方案。
文章来源:https://blog.csdn.net/zerotoall/article/details/135136324
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。