Nginx安装步骤 点击获取


Nginx配置文件

Nginx主配置⽂件 /etc/nginx/nginx.conf 是⼀个纯⽂本类型的⽂件,整个配置⽂件是以区块的形式组织的。⼀般每个区块以⼀对⼤括号 {}
1.Main位于nginx.conf配置⽂件的最⾼层
2.Main层下可以有Event、HTTP层
3.HTTP层下⾯有允许有多个Server层, ⽤于对不同的⽹站做不同的配置
4.Server层也允许有多个Location,

nginx默认配置语法
user //设置nginx服务的系统使⽤⽤户
worker_processes //⼯作进程, 配置和CPU个数保持⼀致
error_log //错误⽇志, 后⾯接⼊的是路径
pid //Nginx服务启动时的pid //events事件模块
events { //事件模块
worker_connections //每个worker进程⽀持的最⼤连接数
use //内核模型,select,poll,epoll
//⾮虚拟主机的配置或公共配置定义在http{}段内, server{}段外
http
{ …
//必须使⽤虚拟机配置站点, 每个虚拟机使⽤⼀个server{}段
‘server’ {
listen 80; //监听端⼝, 默认80
server_name localhost; //提供服务的域名或主机名
控制⽹站访问路径
‘location’ / {
root /usr/share/nginx/html; //存放⽹站路径
index index.html index.htm; //默认访问首页⽂件
}
指定错误代码, 统⼀定义错误⻚⾯, 错误代码重定向到新的Locaiton error_page 500 502 503 504 /50x.html;
‘location’ = /50x.html {
root html;
}
}

第⼆个虚拟主机配置
‘server’ {

}


Nginx⽇志配置

在学习⽇志之前, 我们需要先了解下HTTP请求和返回

curl -v http://192.168.1.1


Nginx⽇志配置规范
//配置语法: 包括: error.log access.log

Syntax: log_format name [escape=default|json] string ...;
Default: log_format combined "...";
Context: http

//Nginx默认配置

log_format main '$remote_addr - $remote_user [$time_local] "$request"'
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';


//Nginx⽇志变量

$remote_addr //表示客户端地址
$remote_user //http客户端请求nginx认证⽤户名
$time_local //Nginx的时间
$request //Request请求⾏, GET等⽅法、http协议版本
$status //respose返回状态码
$body_bytes_sent //从服务端响应给客户端body信息⼤⼩
$http_referer //http上⼀级页⾯, 防盗链、⽤户⾏为分析
$http_user_agent //http头部信息, 客户端访问设备
$http_x_forwarded_for //http请求携带的http

要想让nginx访问日志格式生效,添加以下两行在http区域(server区域上):

log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent                       "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"';access_log logs/access.log main;

Nginx状态监控

–with-http_stub_status_module 记录 Nginx 客户端基本访问状态信息
Syntax: stub_status;
Default: — Context: server, location

具体配置如下:
先查看一下nginx都有哪些文件

find / -name nginx


然后修改nginx的配置文件:
删除配置文件的空行 和 #号开头的行

sed -i '/#/d' /usr/local/nginx/conf/nginx.conf
sed -i '/^$/d' /usr/local/nginx/conf/nginx.conf

修改配置文件

vi /usr/local/nginx/conf/nginx.conflocation /mystatus {stub_status on;access_log off;


客户机访问:

//Nginx_status概述
Active connections:2 //Nginx当前活跃连接数
server accepts handled requests
2 2 5
server表示Nginx处理接收握⼿总次数。
accepts表示Nginx处理接收总连接数。
请求丢失数=(握⼿数-连接数)可以看出,本次状态显示没有丢失请求。 handled requests,表示总共处理了19次请求。
Reading Nginx读取数据
Writing Nginx写的情况
Waiting Nginx开启keep-alive连接情况下, 既没有读也没有写, 建⽴连接情况


Nginx下载站点

Nginx默认是不允许列出整个⽬录浏览下载。

Syntax: autoindex on | off;
Default:
autoindex off;
Context: http, server, location
//autoindex常⽤参数
autoindex_exact_size off;
默认为on, 显示出⽂件的确切⼤⼩,单位是bytes。
修改为off,显示出⽂件的⼤概⼤⼩,单位是kB或者MB或者GB。
autoindex_localtime on;
默认为off,显示的⽂件时间为GMT时间。
修改为on, 显示的⽂件时间为⽂件的服务器时间。
charset utf-8,gbk;

配置⽬录浏览功能
//开启⽬录浏览

vi /usr/local/nginx/conf/nginx.conflocation / {root html;autoindex on;autoindex_localtime on;autoindex_exact_size off;}


重启nginx服务

systemctl restart nginx

进入网页目录

cd /usr/local/nginx/html/

删除默认的页面

[root@localhost html]# ls
50x.html  index.html
[root@localhost html]# rm -rf *

上传软件包

[root@localhost html]# ls
httpd-2.2.17.tar.gz  nginx-1.18.0.tar.gz

客户机访问验证:


Nginx访问限制

limit_conn_module 模块可以限制nginx服务器所承载的单个客户端单个ip地址在单一时间所发起的连接数量
limit_req_module 模块可以限制nginx服务器所承载的单个客户端单个ip地址在单一时间所发起的请求数量;

http协议的连接与请求
HTTP是建⽴在TCP, 在完成HTTP请求需要先建⽴TCP三次握⼿(称为TCP连接),在连接的基础上在HTTP请求。

HTTP 协议的连接与请求

HTTP协议版本 连接关系
HTTP1.0 TCP不能复⽤
HTTP1.1 顺序性TCP复⽤
顺序性TCP复⽤ 多路复⽤TCP复⽤

TTP 请求建⽴在⼀次 TCP 连接基础上
⼀次 TCP 请求⾄少产⽣⼀次 HTTP 请求
查看nginx默认安装的模块,在解压nginx源代码目录下运行以下命令

[root@localhost nginx-1.18.0]# cat auto/options | grep YES

查看是否有limitc_conn这个模块

[root@localhost nginx-1.18.0]# cat auto/options | grep "HTTP_LIMIT_CONN=YES"
[root@localhost nginx-1.18.0]# cat auto/options | grep "HTTP_LIMIT_REQ=YES"

Nginx连接限制配置

//Nginx连接限制语法
Syntax: limit_conn_zone key zone=name:size;
Default: —
Context: http
Syntax: limit_conn zone number;
Default: —
Context: http, server, location

具体配置如下:

vi /usr/local/nginx/conf/nginx.conflimit_conn_zone $binary_remote_addr zone=conn_zone:10m;  ##http段配置连接限制, 同⼀时刻只允许⼀个客户端IP连接
limit_conn conn_zone 1;                                  ##同⼀时刻只允许⼀个客户端IP连接


重启nginx服务器

systemctl restart nginx
cd /usr/local/nginx/html/
rm -rf *
echo "haha" > index.html

压⼒测试

yum install -y httpd-tools
ab -n 50 -c 20 http://127.0.0.1/index.html


Nginx 请求限制配置

//Nginx请求限制语法
Syntax: limit_req_zone key zone=name:size rate=rate;
Default: —
Context: http
Syntax: limit_conn zone number [burst=number] [nodelay];
Default: —
Context: http, server, location

具体配置如下
//http段配置请求限制, rate限制速率,限制⼀秒钟最多⼀个IP请求

vi /usr/local/nginx/conf/nginx.conf
limit_req_zone $binary_remote_addr zone=req_zone:10m rate=30r/m;      ##30r/m1分钟只接受30个请求,其余请求拒绝处理并返回错误码给客户端
limit_req zone=req_zone;                                              ##请求超过1r/2s,剩下的将被延迟处理,请求数超过burst定义的数量, 多余的请求返回503


压⼒测试

systemctl restart nginx      ##重启服务
ab -n 50 -c 20 http://127.0.0.1/index.html


客户机访问:(连续访问会503)


连接限制没有请求限制有效?
我们前⾯说过, 多个请求可以建⽴在⼀次的TCP连接之上, 那么我们对请求的精度限制,当然 ⽐对⼀个连接的限制会更加的有效。
因为同⼀时刻只允许⼀个连接请求进⼊。
但是同⼀时刻多个请求可以通过⼀个连接进⼊。
所以请求限制才是⽐较优的解决⽅案。


Nginx访问控制

基于IP的访问控制 http_access_module
基于⽤户登陆认证 http_auth_basic_module
基于IP的访问控制

配置拒绝某⼀个IP, 其他全部允许
查看客户机的ip

vi /usr/local/nginx/conf/nginx.conf
deny 192.168.1.254;
allow all;


客户机访问验证:

拒绝某⼀个⽹段访问,其它全部允许

deny 192.168.1.0/24;
allow all;

只允许某⼀个⽹段访问,其它全部拒绝

allow 192.168.1.0/24;
deny all;

基于⽤户登陆认证

htpasswd -c /usr/local/nginx/conf/auth_conf zps   ##创建认证用户##并设置密码
vi /usr/local/nginx/conf/nginx.conf               ##修改nginx配置文件auth_basic "Auth access Blog Input your Passwd!";auth_basic_user_file /usr/local/nginx/conf/auth_conf;

systemctl restart nginx   ##重启nginx服务

客户机访问验证:

⽤户认证局限性
1.⽤户信息依赖⽂件⽅式
2.⽤户管理⽂件过多, ⽆法联动
3.操作管理机械,效率低下
解决办法
1.Nginx 结合 LUA 实现⾼效验证
2.Nginx 结合 LDAP 利⽤ nginx-auth-ldap


Nginx虚拟主机

所谓虚拟主机,在web服务器⾥是⼀个独⽴的⽹站站点,这个站点对应独⽴的域名(也可能是IP或 端⼝),具有独⽴的程序及资源⽬录,可以独⽴地对外提供服务供⽤户访问。

1.创建web站点⽬录

mkdir -p /soft/code/{www,bbs}
echo "www" > /soft/code/www/index.html
echo "bbs" > /soft/code/bbs/index.html

2.配置虚拟主机 (基于域名)

vi /usr/local/nginx/conf/nginx.confserver {listen       80;index  index.html index.htm;server_name www.zps.com;location / {root /soft/code/www;}}server {listen       80;index  index.html index.htm;server_name bbs.zps.com;location / {root /soft/code/bbs;

nginx -t                    ##检查语法
systemctl restart nginx     ##重启nginx服务

访问端修改本地hosts文件

客户机访问验证:


配置虚拟主机别名
所谓虚拟主机别名,就是虚拟主机设置除了主域名以外的⼀个域名,实现⽤户访问的多个域名对应同⼀个 虚拟主机⽹站的功能。
以www.zps.com域名的虚拟主机为例:
为其增加⼀个别名zps.com时,出现⽹站内容和访问www.zps.com是⼀样的,
具体配置如 下:
默认配置

vi /usr/local/nginx/conf/nginx.confserver {listen       80;index  index.html index.htm;server_name www.zps.com;location / {root /soft/code/www;}

别名配置

vi /usr/local/nginx/conf/nginx.confserver {listen       80;index  index.html index.htm;server_name www.zps.com zps.com;location / {root /soft/code/www;}
systemctl restart nginx

访问端修改本地hosts文件

客户端访问:


Nginx 基础配置相关推荐

  1. Nginx基础配置实例需求分析

    前面我们已经对Nginx服务器默认配置文件的结构和涉及的基本指令做了详细的阐述.通过这些指令的合理配置,我们就可以让一台Nginx服务器正常工作,并且提供基本的web服务器功能. 接下来我们将通过一个 ...

  2. Nginx基础配置实例配置实现

    配置的内容如下: ##全局块 begin## #配置允许运行Nginx工作进程的用户和用户组 user www; #配置运行Nginx进程生成的worker进程数 worker_processes 2 ...

  3. nginx 基础配置和常用模块

    这两天在看nginx的东西,下面是学习过程中学习到东西,贴了出来若有哪里不对请大家给予指正. 一:nginx安装: ./configure --prefix=/usr/local/nginx/  ma ...

  4. Nginx基础配置和相关知识

    配置使用nginx 1.nginx虚拟主机         server{             listen             server_name             root    ...

  5. nginx日志[配置解释]

    经常使用nginx,但是对nginx中的日志配置了解的不多,最近简单的学习了一下,在此简略的记录下. nginx基础配置如下: user nginx; worker_processes auto;er ...

  6. nginx ---- Nginx服务器基础配置实例

    前面我们已经对Nginx服务器默认配置文件的结构和涉及的基本指令做了详细的阐述.通过这些指令的合理配置,我们就可以让一台Nginx服务器正常工作,并且提供基本的web服务器功能. 接下来我们将通过一个 ...

  7. Nginx基础应用配置小结 - 运维笔记

    Nginx基础应用配置小结 - 运维笔记 在linux系统下使用nginx作为web应用服务,用来提升网站访问速度的经验已五年多了,今天在此对nginx的使用做一简单总结. 一.nginx服务简介 N ...

  8. Nginx的安装基础配置(windows、linux)以及搭建图片服务器(windows、阿里云),文件上传

    Nginx的安装基础配置(windows.linux)以及搭建图片服务器(windows.阿里云),文件上传 本文目录 文章目录 Nginx的安装基础配置(windows.linux)以及搭建图片服务 ...

  9. Nginx基础学习笔记(正向/反向代理,Nginx均衡负载和配置)

    目录 1. 正向代理和反向代理 1.1 正向代理 (1)什么是正向代理? (2)正向代理的特点 (3)正向代理的用途 1.2 反向代理 (1)什么是反向代理? (2)反向代理的特点 (3)反向代理的用 ...

  10. 网络安全基础知识---nginx安全配置

    nginx安全配置 隐藏版本号 `http {   server_tokens off;}` 开启HTTPS server {       listen 443;     server_name xx ...

最新文章

  1. python 把带小数的浮点型字符串转换为整数的解决方案
  2. python web-2019年Python Web五大主流框架
  3. 科普 | 你必须了解的漏洞利用缓解及对抗技术
  4. isnull mysql_mysql isnull用法讲解
  5. bi 存储过程方案_BI 系统中容易被忽视的数据源功能
  6. #ifdef,#ifndef,#define,#endif解析(原)
  7. MFC中的动态创建与运行时识别
  8. Qt工作笔记-QCustomPlot的基本使用
  9. 15 PP配置-生产计划-主数据-定义特殊采购类型
  10. python subplots_python fig,ax = plt.subplots()
  11. 设计即开发,如何打通软件研发的“任督二脉”?
  12. Some personal records
  13. 斯蒂文理工计算机排名,全美最强STEM大学排行榜发布!这些学校考虑一下?
  14. Windows XP/2000实现自动登陆(加入域和未加域两种情况)
  15. 将Flutter添加到现有应用——过程中遇到的问题
  16. l计算机等级考试电子邮箱填写什么,计算机等级考试详解:电子邮箱的地址组成结构!...
  17. Snowflake Snow Snowflakes(Hash + 链式前向星)
  18. pg 快速造1000w测试数据
  19. c语言双胞胎素数,征求好的算法:输出十万以内的双胞胎素数
  20. Windows下安装openvino问题汇总

热门文章

  1. python实现word自动化操作
  2. 7-6 536 判定子串
  3. MODBUS CRC16 工具类
  4. Windows 2016 修改密码时提示密码不符合规则
  5. Go语言aes加密解密处理
  6. AR手游《悠梦2》再获苹果推荐,下载《网易洞见》可免费试玩
  7. 【算法】【回溯】力扣-面试题08.07.无重复字符串的排列组合详解【超详细的算法解释和注释】
  8. 《Real-Time Rendering 4th Edition》全文翻译 - 第5章 着色基础(上)5.1 ~ 5.2
  9. 压缩文件不记得密码了怎么办?
  10. 压缩包文件的解压码如何破解