目录

一、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优化(一)相关推荐

  1. Nginx.conf设置nginx优化(二)

    目录 一.啥是盗链? 二.配置nginx.conf实现防盗链 1.通过referer的方式配置防盗链 2.对配置进行试验 三.nginx的日志分割 四.nginx的网页压缩设置 五.nginx的高并发 ...

  2. windows版本服务器,修改nginx.conf,重启nginx配置文件不起作用解决办法。

    我的nginx是在windows版本服务器上面,我按照了nginx的命令: nginx -s reload :修改配置后重新加载生效 nginx -t -c /path/to/nginx.conf 测 ...

  3. nginx部署、配置优化

    nginx安装 安装依赖 yum -y install gcc gcc-c++ make unzip pcre pcre-devel zlib zlib-devel libxml2 libxml2-d ...

  4. Nginx的搭建和优化

    目录 Nginx概述 一款高性能.轻量级Web服务软件 Nginx相对于Apache的优点: Apache相对于Nginx的优点 编译安装Nginx 服务 关闭防火墙并将压缩包解压到opt目录下 安装 ...

  5. Nginx工作原理和优化、漏洞(转)

    查看安装了哪些模块命令: [root@RG-PowerCache-X xcache]# nginx/sbin/nginx -V nginx version: nginx/1.2.3 built by  ...

  6. Nginx网页与安全优化

    文章目录 前言 一.隐藏版本号 方法一:修改配置文件方式 方法二:修改源码文件,重新编译安装 二.修改用户和组 三.缓存时间 四.日志分割 五.连接超时 六.更改进程数 七.配置网页压缩 八.配置防盗 ...

  7. Nginx工作原理和优化总结。

    NGINX以高性能的负载均衡器,缓存,和web服务器闻名,驱动了全球超过 40% 最繁忙的网站.在大多数场景下,默认的 NGINX 和 Linux 设置可以很好的工作,但要达到最佳性能,有些时候必须做 ...

  8. 使用log_format为Nginx服务器设置更详细的日志格式

    2019独角兽企业重金招聘Python工程师标准>>> nginx服务器日志相关指令主要有两条,一条是log_format,用来设置日志格式,另外一条是access_log,用来指定 ...

  9. ubuntu nginx 伪静态 设置

    简单的静态设置 1  vim nginx.conf // 修改nginx配置文件 server { .... root /usr/local/nginx/html; #nginx网站根目录 #下面这个 ...

最新文章

  1. Linux安装gcc时碰到的有关问题解决(解决gcc依赖有关问题)
  2. 【实用】表维护视图SM30增加自定义按钮的实现
  3. 【mybatis】插入操作更新id
  4. PHP简单操作Excel
  5. SpringCloud Ribbon(一)之自定义负载均衡器ILoadBalancer
  6. C语言项目:图形马赛克处理技术
  7. 【Elasticsearch】Elasticsearch 悬空索引
  8. 矩池云中Tensorflow指定GPU及GPU显存设置
  9. Linux 文件夹和文件大小排序
  10. Android eclipse中程序调试
  11. OpenCV 与 OpenGL 的关系是什么?
  12. postgresql保存图片_第一章 PostgreSQL中的数据库集群、数据库和表
  13. flowable 清除流程本地缓存
  14. 学计算机买什么书好,学电脑基础知识买什么书好?
  15. NBUT 1451 Elise (暴力+并查集)
  16. 详细解读Xbox Series X:比起堆料,它其实更在乎效率
  17. BOM对非标制造企业成本管控的重要性
  18. 八数码问题-8puzzle
  19. LeetCode 刷题之旅(2020.05.22)——105. 从前序与中序遍历序列构造二叉树(中)
  20. 定位教程3---固定相机,先拍后抓

热门文章

  1. python的模拟登录原理_Python模拟登陆实例详解
  2. 【优化求解】基于混合蛙跳算法实现最优求解matlab源码
  3. 极简智能参加《工信部信创运维发展指数研讨会》,获得国家级信创组织认证
  4. 这些天在家自己学习瑜伽
  5. Mybatis中使用oracle的模糊查询的SQL语句写法
  6. Jmeter安装配置教程【5.5】【Windows】,装不好你打我
  7. 亚洲上海linux_亚洲企鹅将程序变成Linux的成功
  8. mac上安装启动redis
  9. 华为android os耗电90%,鸿蒙OS如约而至,90%华为手机支持升级,麒麟9000率先尝鲜...
  10. python王者战斗_PYTHON-面向对象-练习-王者荣耀 对砍游戏