Nginx.conf设置nginx优化(一)
目录
一、nginx的配置文件
二、配置nginx.conf实现反向代理
Ⅰ、什么是反向代理?
Ⅱ、用nginx实现反向代理
三、配置nginx.conf实现负载均衡
Ⅰ、什么是负载均衡
Ⅱ、配置负载均衡
四、配置nginx.conf实现动静分离
Ⅰ、动静分离
五、配置nginx.conf实现版本号的隐藏
Ⅰ、查看版本号
Ⅱ、隐藏版本号
六、配置nginx访问控制
Ⅰ、基于客户端的访问控制
Ⅱ、基于Basic Auth认证的访问控制实战
七、nginx虚拟主机
Ⅰ、基于IP的虚拟主机
Ⅱ、基于域名的虚拟主机
Ⅲ、基于端口号的虚拟主机
一、nginx的配置文件
nginx的配置文件位置处于*/nginx/conf/下,名为nginx.conf
以下是nginx配置文件的主要结构:分为三大块:全局块,events块,http块
全局块:
从配置文件开始到events块开始之前的内容,都属于全局块,在全局块中配置的都是影响Nginx整体运行的配置。比如说:worker(工作进程)的数量,错误日志的位置等
events块
events块主要影响nginx服务器与⽤户的⽹络连接,⽐如worker_connections 1024,标识每个 workderprocess进程⽀持的最⼤连接数为1024
http块
http块是配置最频繁的部分,虚拟主机的配置,监听端⼝的配置,请求转发、反向代理、负载均衡 等
本篇内容主要探讨在http块中设置反向代理和负载均衡功能的实现。
二、配置nginx.conf实现反向代理
Ⅰ、什么是反向代理?
反向代理,指的是
浏览器/客户端
并不知道自己要访问具体哪台目标服务器
,只知道去访问代理服务器
,代理服务器
再通过反向代理 +负载均衡
实现请求分发到应用服务器
的一种代理服务。
反向代理服务的特点是代理服务器
代理的对象是应用服务器
,也就是对于浏览器/客户端
来说应用服务器
是隐藏的。
Ⅱ、用nginx实现反向代理
我们打开nginx的配置文件
vim /usr/local/nginx/conf/nginx.conf
如上文所说,我没找到http块下的server
server {listen 80;server_name localhost;
#监听端口80#charset koi8-r;#access_log logs/host.access.log main;location / {root html;index index.html index.htm;}
#文件为nignx下的html的index.html和index.htm
我们进行如下设置
server {listen 80;server_name localhost;#charset koi8-r;#access_log logs/host.access.log main;location / {proxy_pass http://www.baidu.com;# root html;# index index.html index.htm;}
添加反向代理,注释掉原来的信息
配置好配置文件,我们重启nginx
nginx -s reload
原先我们在浏览器上访问这台nginx服务器,会出现以下页面
重启完成后我们刷新页面
网址名变成了www.baidu.com
三、配置nginx.conf实现负载均衡
Ⅰ、什么是负载均衡
负载均衡算法
常用的有轮询
、权重、
ip_hash、least_conn、url_hash、fair
算法
轮询:指定轮询server,原理是每一个请求按时间顺序逐一被分发到不同的应用服务器
权重:原理是每一个请求按权重被分发到不同的应用服务器
ip_hash:根据客户端的ip地址转发同一台服务器,可用保持会话
least_conn:最少连接访问
url_hash:
根据用户访问的url定向转发请求
fair:
根据后端服务器响应时间转发请求
Ⅱ、配置负载均衡
指定server时,ip地址需要加上端口号
upstream https {server 192.168.116.120:80 weight=7 fail_timeout=5 max_fails=3;server 192.168.116.23:80 weight=3 fail_timeout=5 max_fails=3;server 192.168.116.25:80 weight=1 backup;ip_hash;}http{server {listen 80;server_name localhost;#charset koi8-r;#access_log logs/host.access.log main;location / {proxy_pass http://https;#root html;#index index.html index.htm;}#此处省略部分内容}
注意upstream的位置,他和http块拥有相同级别
weight : 权重,默认为1,weight越大,负载的权重就越大
down:表示当前server不参与负载
backup:其他server正常运行时不进行负载,否则请求backup机器
max_fails:最大请求失败次数
fail_timeout:配合max_fails使用,表示在fail_timeout时间(s)内max_fails次就不再对该机器进行请求
一般来说,每一台server机器上的内容应该是一样的,这样才能保证想要访问的内容不会因为轮询机制出现差错,起到负载均衡的作用。
我们试一试只设置upstream里的server,不进行权重等其他配置,两台机器的内容分别为
HI!!192.168.116.120HI!!192.168.116.23
来到浏览器进行刷新
可以发现,页面内容表示出两台机器在轮询显示,均衡了nginx的负载
因为现在很多情况下都是集群部署
,而且集群下的各个服务器资源大多都是不均匀的,资源高的则分配权重高一些,资源低的则分配权重低一些,这种情况使用基于权重
的负载均衡算法,可以更高效的利用资源和提高并发处理能力,所以另四种算法在这里不做讨论。
四、配置nginx.conf实现动静分离
Ⅰ、动静分离
适用于中小型的网站配置,将静态资源直接放在nginx服务器中,来达到加速的效果
我们进入配置文件进行设置
location /css {root html;index index.html index.htm;}location /js{root html;index index.html index.htm;}location /img {root html;index index.html index.htm;}
或者使用正则表达式:location ~*/(css|js|img) {root html;index index.html index.htm;}
复制location,配置如上,并把相应的静态资源放在*/nginx/html/下,这样,当用户访问资源时,静态资源就不用再从后端的服务器出发经过nginx服务器传输过来了,提高了效率。
五、配置nginx.conf实现版本号的隐藏
Ⅰ、查看版本号
*/nginx/sbin/nginx -v
curl -i 192.168.116.22
在网页上暴露nginx的版本号,不利于网站安全,为防止他人针对版本漏洞进行攻击,在浏览器打开nginx服务器,按F12就可以看到nginx的版本号,所以,我们要把它隐藏起来
Ⅱ、隐藏版本号
vim /usr/local/nginx/conf/nginx.confhttp {
include mime.types;
default_type application/octet-stream;
server_tokens off; #关闭
版本信息就被我们隐藏了
还可以选择修改源码文件,重新进行安装的方式来自定义版本信息,修改下面双引号里的内容,再进行安装,也可以达到隐藏真实版本信息的目的。
vim /opt/nginx-1.20.2/src/core/nginx.h
define NGINX_VERSION "1.20.2" #修改版本号
define NGINX_VER "nginx/" NGINX_VERSION #修改服务器类型
六、配置nginx访问控制
Ⅰ、基于客户端的访问控制
基于客户端的访问控制可以在nginx的配置文件中修改进行实现的,具体的方法:
1.deny IP/IP段 拒绝某个IP或IP段的客户端对nginx服务器进行访问2.allow IP/IP段 允许某个IP或IP段的客户端对nginx服务器进行访问
例:
连接nginx服务器的机器IP
正常连接
进入nginx服务器的机器修改配置文件,添加禁止这台连接nginx服务器的机器IP
对页面进行刷新,发现返回码403
Ⅱ、基于Basic Auth认证的访问控制实战
基于用户的信任登录模块:http_auth_basic_module
使用htpasswd生成用户认证文件,如果没有该命令,使用yum进行下载
yum install -y http_tools
使用htpasswd命令创建一个test用户并设置密码
[root@ljp /]# htpasswd -c /usr/local/nginx/passwd_conf test
New password:
Re-type new password:
Adding password for user test
进入配置文件,进行如下修改
location / {root html;index index.html index.htm;auth_basic "passwd_conf";auth_basic_user_file /usr/local/nginx/passwd_conf;
}
---》wq
systemctl reload nginx.service
修改密码文件的权限和属主
chmod 400 /usr/local/nginx/passwd_conf
chown nginx /usr/local/nginx/passwd_conf
对nginx服务器进行再次访问,发现需要输入用户名和密码进行登录。
七、nginx虚拟主机
在nignx中,一台服务器上的nginx可以通过虚拟主机运行多个网站,通过基于IP、基于域名、基于端口号的三种方式的虚拟主机。
每个虚拟主机都在nginx配置文件中有一个独立的server段,不同的是他们的内容和监听的ip、端口号。
Ⅰ、基于IP的虚拟主机
server {listen 80;server_name 192.168.116.22;charset utf-8;location{
此处省略部分信息
}
}server {listen 80;server_name 192.168.116.120;charset utf-8;
location{
此处省略部分信息
}
}
Ⅱ、基于域名的虚拟主机
server {listen 80;server_name www.ljp.com;charset utf-8;location{
此处省略部分信息
}
}server {listen 80;server_name www.fire.com;charset utf-8;
location{
此处省略部分信息
}
}
Ⅲ、基于端口号的虚拟主机
server {listen 80;server_name 192.168.116.22:80;charset utf-8;location{
此处省略部分信息
}
}server {listen 80;server_name 192.168.116.22:443;charset utf-8;
location{
此处省略部分信息
}
}
Nginx.conf设置nginx优化(一)相关推荐
- Nginx.conf设置nginx优化(二)
目录 一.啥是盗链? 二.配置nginx.conf实现防盗链 1.通过referer的方式配置防盗链 2.对配置进行试验 三.nginx的日志分割 四.nginx的网页压缩设置 五.nginx的高并发 ...
- windows版本服务器,修改nginx.conf,重启nginx配置文件不起作用解决办法。
我的nginx是在windows版本服务器上面,我按照了nginx的命令: nginx -s reload :修改配置后重新加载生效 nginx -t -c /path/to/nginx.conf 测 ...
- nginx部署、配置优化
nginx安装 安装依赖 yum -y install gcc gcc-c++ make unzip pcre pcre-devel zlib zlib-devel libxml2 libxml2-d ...
- Nginx的搭建和优化
目录 Nginx概述 一款高性能.轻量级Web服务软件 Nginx相对于Apache的优点: Apache相对于Nginx的优点 编译安装Nginx 服务 关闭防火墙并将压缩包解压到opt目录下 安装 ...
- Nginx工作原理和优化、漏洞(转)
查看安装了哪些模块命令: [root@RG-PowerCache-X xcache]# nginx/sbin/nginx -V nginx version: nginx/1.2.3 built by ...
- Nginx网页与安全优化
文章目录 前言 一.隐藏版本号 方法一:修改配置文件方式 方法二:修改源码文件,重新编译安装 二.修改用户和组 三.缓存时间 四.日志分割 五.连接超时 六.更改进程数 七.配置网页压缩 八.配置防盗 ...
- Nginx工作原理和优化总结。
NGINX以高性能的负载均衡器,缓存,和web服务器闻名,驱动了全球超过 40% 最繁忙的网站.在大多数场景下,默认的 NGINX 和 Linux 设置可以很好的工作,但要达到最佳性能,有些时候必须做 ...
- 使用log_format为Nginx服务器设置更详细的日志格式
2019独角兽企业重金招聘Python工程师标准>>> nginx服务器日志相关指令主要有两条,一条是log_format,用来设置日志格式,另外一条是access_log,用来指定 ...
- ubuntu nginx 伪静态 设置
简单的静态设置 1 vim nginx.conf // 修改nginx配置文件 server { .... root /usr/local/nginx/html; #nginx网站根目录 #下面这个 ...
最新文章
- Linux安装gcc时碰到的有关问题解决(解决gcc依赖有关问题)
- 【实用】表维护视图SM30增加自定义按钮的实现
- 【mybatis】插入操作更新id
- PHP简单操作Excel
- SpringCloud Ribbon(一)之自定义负载均衡器ILoadBalancer
- C语言项目:图形马赛克处理技术
- 【Elasticsearch】Elasticsearch 悬空索引
- 矩池云中Tensorflow指定GPU及GPU显存设置
- Linux 文件夹和文件大小排序
- Android eclipse中程序调试
- OpenCV 与 OpenGL 的关系是什么?
- postgresql保存图片_第一章 PostgreSQL中的数据库集群、数据库和表
- flowable 清除流程本地缓存
- 学计算机买什么书好,学电脑基础知识买什么书好?
- NBUT 1451 Elise (暴力+并查集)
- 详细解读Xbox Series X:比起堆料,它其实更在乎效率
- BOM对非标制造企业成本管控的重要性
- 八数码问题-8puzzle
- LeetCode 刷题之旅(2020.05.22)——105. 从前序与中序遍历序列构造二叉树(中)
- 定位教程3---固定相机,先拍后抓
热门文章
- python的模拟登录原理_Python模拟登陆实例详解
- 【优化求解】基于混合蛙跳算法实现最优求解matlab源码
- 极简智能参加《工信部信创运维发展指数研讨会》,获得国家级信创组织认证
- 这些天在家自己学习瑜伽
- Mybatis中使用oracle的模糊查询的SQL语句写法
- Jmeter安装配置教程【5.5】【Windows】,装不好你打我
- 亚洲上海linux_亚洲企鹅将程序变成Linux的成功
- mac上安装启动redis
- 华为android os耗电90%,鸿蒙OS如约而至,90%华为手机支持升级,麒麟9000率先尝鲜...
- python王者战斗_PYTHON-面向对象-练习-王者荣耀 对砍游戏