Nginx入门的基本使用和配置详解
off999 2025-01-03 18:12 31 浏览 0 评论
Nginx版本:nginx-1.12.2.tar.gz
内容介绍
一、 nginx 简介
1、什么是 nginx 和可以做什么事情
Nginx 是高性能的 HTTP 和反向代理的服务器,处理高并发能力是十分强大的, 能经受高负 载的考验,有报告表明能支持高达 50,000 个并发连接数,实际上能达到2~3万个并发连接数
2、正向代理
需要在客户端配置代理服务器进行指定网站访问(代理的是客户端)
3、反向代理
暴露的是代理服务器地址,隐藏了真实服务器 IP 地址(代理的是服务器端)
4、负载均衡
增加服务器的数量,然后将请求分发到各个服务器上,将原先请求集中到单个服务器上的 情况改为将请求分发到多个服务器上,将负载分发到不同的服务器,也就是我们所说的负载均衡
5、动静分离
二、 Nginx 的安装
1、准备工作
(1)打开虚拟机,使用远程连接工具连接 linux 操作系统
(2)到 nginx 官网下载软件: http://nginx.org/
2、开始进行 nginx 安装,在linux系统的服务器端安装
(1)安装 pcre 依赖第一种方式:
第一步 联网下载 pcre 压缩文件依赖到自己的电脑中
命令: wget
http://downloads.sourceforge.net/project/pcre/pcre/8.37/pcre-8.37.tar.gz
第二步 连接远程服务器,把pcre 压缩文件上传到服务器中,然后解压该压缩文件
命令: tar –xvf pcre-8.37.tar.gz
第三步 进入 pcre-8.37.tar.gz解压后的目录,执行 ./configure , 执行完成后,再执行 make && make install 命令,完成pcre的安装
第四步 查看pcre是否成功安装的命令: pcre-config --version
(2)安装 pcre 依赖第二种方式:
第一步 yum -y install pcre (yum命令直接自动下载并且安装pcre)
第二步 查看pcre是否成功安装的命令: pcre-config --version
(3)安装 openssl 、 zlib 、 gcc 依赖
yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel
(4)安装 nginx
第一步 联网下载 nginx 压缩文件依赖到自己的电脑中
nginx 官网下载软件: http://nginx.org/
第二步 连接远程服务器,把 nginx 压缩文件上传到服务器中,然后解压该压缩文件
执行命令: tar –xvf nginx-1.12.2.tar.gz
第三步 进入 nginx-1.12.2.tar.gz 解压后的目录,执行 ./configure 来进行检查, 执行完成后,再执行 make && make install 命令,完成pcre的安装
第四步 安装完Nginx后,需要知道系统中多了哪些文件,它们都安装到了那里。可以使用下面的命令进行查看: rpm -ql nginx 其中rpm 是linux的rpm包管理工具,-q 代表询问模式,-l 代表返回列表,这样我们就可以找到nginx的所有安装位置了
第五步 安装完Nginx后,会在usr下多出来一个文件夹local/nginx/nginx/sbin,在sbin里面有一个 nginx 启动脚本,因此我们先执行命令 cd/usr/local/nginx/sbin 找到nginx这个启动脚本,然后执行命令 ./nginx 来启动nginx
第六步 执行命令: ps -ef | grep nginx 查看进程中是否有nginx,有就说明nginx启动成功
第七步 用浏览器访问nginx,在浏览器中输入:127.0.0.1 查看效果
第八步 如果没有显示上图中的内容,应该是服务端没有开放80端口,把80端口开放一下就可以了
- 查看开放的端口号
- firewall-cmd --list-all
- 设置开放的端口号
- firewall-cmd --add-service=http –permanent
- firewall-cmd --add-port=80/tcp --permanent
- 重启防火墙
- firewall-cmd –reload
三、 Nginx 的常用命令和配置文件
Nginx 的常用命令
使用nginx操作命令,必须进入 nginx 目录中才可以
cd /usr/local/nginx/sbin
1、查看 nginx 版本号
./nginx -v
2、产看 nginx 的状态
ps -ef | grep nginx
3、启动 nginx
./nginx
4、停止 nginx
./nginx -s stop
4、从容停止 nginx
./nginx -s quit
4、比较野蛮的,直接杀死nginx进程
./killall nginx
4、停止 nginx
./nginx -s stop
5、重新加载 nginx
./nginx -s reload
Nginx 的配置文件
Nginx 的配置文件的位置
1、查询Nginx 的配置文件的位置,执行命令: rpm -ql nginx
- 其中rpm 是linux的rpm包管理工具,-q 代表询问模式,-l 代表返回列表,这样我们就可以找到nginx的所有安装位置了
2、配置文件的位置:cd /usr/local/nginx/conf/nginx.conf
配置文件中的内容包含三部分内容:全局块 、 events 块 、 http 块(包含http块自身和server块)
nginx.conf文件的内容如下:
# 第一部分:全局块:配置服务器整体运行的配置指令
#运行用户,默认即是nginx,可以不进行设置
user nginx;
#Nginx进程,一般设置为和CPU核数一样 -=> 处理并发数的配置
worker_processes 1;
#错误日志存放目录
error_log /var/log/nginx/error.log warn;
#进程pid存放位置
pid /var/run/nginx.pid;
# 第二部分:events 块:影响 Nginx 服务器与用户的网络连接
events {
worker_connections 1024; # 单个后台进程的最大并发数
}
# 第三部分:http 块:还包含两部分:http 全局块和server 块
http {
include /etc/nginx/mime.types; #文件扩展名与类型映射表
default_type application/octet-stream; #默认文件类型
#设置日志模式
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 /var/log/nginx/access.log main; #nginx访问日志存放位置
sendfile on; #开启高效传输模式
#tcp_nopush on; #减少网络报文段的数量
keepalive_timeout 65; #保持连接的时间,也叫超时时间
#gzip on; #开启gzip压缩
include /etc/nginx/conf.d/*.conf; #包含的子配置项位置和文件[server快]
复制代码nginx.conf文件的内容的最后一行,有一个子文件的配置项include /etc/nginx/conf.d/*.conf;,那我们打开这个include子文件配置项看一下里边都有些什么内容,default.conf文件的内容如下:
server {
listen 80; #配置监听端口
server_name localhost; //配置域名
#charset koi8-r;
#access_log /var/log/nginx/host.access.log main;
location / {
root /usr/share/nginx/html; #服务默认启动目录
index index.html index.htm; #默认访问文件
}
#error_page 404 /404.html; # 配置404页面
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html; #错误状态码的显示页面,配置后需要重启
location = /50x.html {
root /usr/share/nginx/html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
# ~ \.php$ 是正则表达式,匹配以.php结尾的所有文件
#location ~ \.php$ {
# proxy_pass http://127.0.0.1; // 反向代理
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all; // deny是禁止访问
# allow all; // allow是允许访问
#}
}
复制代码四、 Nginx 配置实例 1 反向代理
反向代理指令:proxy_pass
server{
listen 80; // 浏览器端访问地址的端口号
# server_name 可以是网址域名; // 浏览器端访问的地址
# server_name 192.168.191.34; // 浏览器端访问的地址
# location / {
# proxy_pass http://123.com; // nginx 反向代理的地址,可以是域名
# proxy_pass 192.168.23.45.8080; // nginx 反向代理的地址
# };
# ~ /edu/ 是正则表达式,区分大小写,匹配的是edu目录
# ~* /edu/ 是正则表达式,不区分大小写,匹配的是edu目录
# = /edu/ 是正则表达式,严格匹配,匹配的是edu目录
location ~ /edu/ {
proxy_pass 192.168.23.45.8081; // nginx 反向代理的地址
};
# ~ /vod/ 是正则表达式,匹配的是vod目录
location ~ /vod/ {
proxy_pass 192.168.23.45.8082; // nginx 反向代理的地址
}
}
复制代码反向代理还有些常用的指令,我在这里给大家列出:
- proxy_set_header : 在将客户端请求发送给后端服务器之前,更改来自客户端的请求头信息
- proxy_connect_timeout: 配置Nginx与后端代理服务器尝试建立连接的超时时间
- proxy_read_timeout : 配置Nginx向后端服务器组发出read请求后,等待相应的超时时间
- proxy_send_timeout:配置Nginx向后端服务器组发出write请求后,等待相应的超时时间
- proxy_redirect : 用于修改后端服务器返回的响应头中的Location和Refresh
- 关于proxy代理指令的详细信息: www.nginx.cn/doc/mail/ma…
五、 Nginx 配置实例 2 负载均衡
配置文件中的内容包含三部分内容:全局块 、 events 块 、 http 块(包含http块自身和server块)
实现负载均衡主要在http块和server块里面配置
- http块的配置如下:
http {
# ... 省略http块默认带有的配置
upstream myserver {
server 115.28.52.63:8080 ;
server 115.28.52.63:8081 ;
}
}
复制代码- server块的配置如下:
aerver {
location / {
... 省略location里面默认带有的配置
proxy_pass http://myserver; //myserver是上面创建的myserver服务名
proxy_connect_timeout 10;
}
}
复制代码- Nginx 提供了几种常用的负载均衡(load balance)的分配方式(策略)
1、轮询(默认)
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器 down 掉,能自动剔除
2、 weight
weight 代表权,重默认为 1,权重越高被分配的客户端越多
upstream server_pool {
server 192.168.5.21 weight=10; // weight 代表权,重默认为 1,权重越高被分配的客户端越多
server 192.168.5.22 weight=10;
}
复制代码3、 ip_hash
每个请求按访问 ip 的 hash 结果分配,这样每个访客固定访问一个后端服务器,可以解决 session 的问题,例如:
upstream server_pool {
ip_hash;
server 192.168.5.21:80;
server 192.168.5.22:80;
}
复制代码4、 fair(第三方)
按后端服务器的响应时间来分配请求,响应时间短的优先分配
upstream server_pool {
server 192.168.5.21:80;
server 192.168.5.22:80;
fair;
}
复制代码六、 Nginx 配置实例 3 动静分离
1、什么是动静分离?
Nginx 动静分离简单来说就是把动态跟静态请求分开,不能理解成只是单纯地把动态页面和 静态页面物理分离。严格意义上说应该是动态请求跟静态请求分开,可以理解成使用 Nginx 处理静态页面, Tomcat 处理动态页面
动静分离从目前实现角度来讲大致分为两种:
- 一种是纯粹把静态文件独立成单独的域名,放在独立的服务器上,也是目前主流推崇的方案
- 另外一种方法就是动态跟静态文件混合在一起发布,通过 nginx 来分开
2、动静分离具体配置
- 在 liunx 系统中准备静态资源,用于进行访问,在nginx里面,新建一个文件夹data
- 配置文件中的内容包含三部分内容:全局块 、 events 块 、 http 块(包含http块自身和server块)
在 nginx 配置文件中server块中进行配置,server块的配置如下:
aerver {
server 80;
server_name 192.168.17.129;
#chartset koi8-r;
#access_log log/host.access.log main;
# 通过nginx实现静态资源跳转
location /www/ {
# /data/是静态资源目录
root /data/;
index index.html index.htm;
}
# 通过nginx实现静态资源跳转
location /image/ {
# /data/是静态资源目录
root /data/;
# autoindex on是列出访问目录,可以不加
autoindex on;
}
}
复制代码七、 Nginx 的高可用集群
1、什么是 nginx 高可用?
服务器的主nginx挂掉了,但是我们依然可以成功的请求到数据
(1)需要两台带有 nginx 的服务器
(2)需要 keepalived 软件;类似于路由,里面通过脚本来检查当前的 主服务器的nginx(主nginx) 是否还活着,如果活着就用,如果宕机死了,就去使用 从服务器的nginx(备份的nginx),在这个过程中,该软件会向外提供一个虚拟IP,这个IP实际是不存在的,但是我们需要用这个虚拟IP去访问
(3)需要虚拟 ip
2、配置高可用的准备工作
(1)需要两台服务器 192.168.17.129 和 192.168.17.131
(2)在两台服务器安装 nginx 软件
在上面有说明如何安装nginx
(3)在两台服务器安装 keepalived 软件
1) 为了方便,可以直接使用 yum 命令进行安装
yum install keepalived –y
安装的版本是 keepalived.x86_64 0:1.3.5-8.el7_6.5
2)查看是否安装成功:rpm -q -a keepalived
3)安装之后,在 etc 目录里面生成目录 keepalived,目录 keepalived里面有文件 keepalived.conf
3、完成高可用配置(主从配置,2个服务器都要配置)
(1)主要是修改/etc/keepalived/keepalivec.conf 配置文件
# 全局定义
global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 192.168.17.129
smtp_connect_timeout 30
router_id LVS_DEVEL # 服务器的主机的名字,可以访问到主机
# /etc/hosts 文件中,添加主机名字 例如:127.0.0.1 LVS_DEVEL
}
# 检测脚本(查看nginx是否还活着)和权重参数
vrrp_script chk_http_port {
script "/usr/local/src/nginx_check.sh" # 这个是自己创建的脚本文件位置
interval 2 # 检测脚本执行的间隔,2秒执行一次
weight 2 # 权重
}
# 虚拟IP的配置,常用的配置
vrrp_instance VI_1 {
state BACKUP # 备份服务器上将 MASTER 改为 BACKUP
interface ens33 //服务器网卡名称 使用ifconfig命令来查看
virtual_router_id 51 # 主、备机的 virtual_router_id 必须相同
priority 90 # 主、备机取不同的优先级,主机值较大,备份机值较小
advert_int 1 # 心跳检测,确认主服务器是否还活着,检测间隔为1秒
authentication {
auth_type PASS # 权限校验的方式:密码
auth_pass 1111 # 权限校验的密码:1111
}
virtual_ipaddress {
192.168.17.50 // VRRP H 虚拟地址
}
}
复制代码(2)在/usr/local/src 添加检测脚本文件nginx_check.sh
/usr/local/nginx/sbin/nginx 是nginx的启动路径
3)把两台服务器上 nginx 和 keepalived 启动
启动 nginx: ./nginx
启动 keepalived: systemctl start keepalived.service
4、最终测试
1)在浏览器地址栏输入 虚拟 ip 地址 192.168.17.50
2)把主服务器(192.168.17.129) nginx 和 keepalived 停止,再输入 192.168.17.50查看效果
八、Nginx 的原理的简单分析
1、 Nginx 的原理
是通过 mater 和 worker 来实现的
2、 worker 如何进行工作的?
默认只有一个master,多个worker,有请求过来后,首先master会收到,然后由mster告知worker有新的请求过来了,这时候woker通过争抢机制,来得到这个新的请求,从来进行相应的处理
3、一个 master 和多个 woker 有好处
(1)可以使用 nginx –s reload 热部署,利用 nginx 进行热部署操作
(2)每个 woker 是独立的进程,如果有其中的一个 woker 出现问题,其他 woker 独立的, 继续进行争抢,实现请求过程,不会造成服务中断
4、设置多少个 woker 合适
worker 数和服务器的 cpu 数相等是最为适宜的
5、连接数 worker_connection
(1)第一个:发送请求,占用了 woker 的几个连接数?
答案: 2 或者 4 个
解析:nginx配置的动静分离,请求静态资源占用2个连接数,请求动态资源,因为要通过tomcat找数据库的数据,所以占用4个连接数
(2)第二个: nginx 有一个 master,有四个 woker,每个 woker 支持最大的连接数 1024,支持的 最大并发数是多少?
普通的静态访问最大并发数是: worker_connections * worker_processes /2
普通的静态访问最大并发数是: 每个woker 支持最大的连接数 * woker个数 /2
而如果是 HTTP 作 为反向代理来说,最大并发数量是 worker_connections * worker_processes/4
而如果是 HTTP 作 为反向代理来说,最大并发数量是: 每个woker 支持最大的连接数 * woker个数 /4
原文链接:
https://juejin.cn/post/6933106590446944264
- 上一篇:Nginx安全配置
- 下一篇:教你用家里的电脑 搭建一个网站服务器
相关推荐
- 自带小游戏的壁纸(自带小游戏的壁纸软件)
-
要把游戏变成壁纸,首先需要找到喜欢的游戏截图或者壁纸素材。然后,将这些素材导入到手机或电脑中,通过设置或编辑软件进行调整和裁剪,以适应屏幕的尺寸和分辨率。接下来,将调整后的图片设置为桌面壁纸或手机壁纸...
- 笔记本电脑怎么连接家里的无线网
-
第一步,首先找到你家的WIFI名称,找到WIFI名称以后直接输入你家的WIFI密码,第二步直接连接上你家的WIFI密码就可以连接到你家的网络上了,连接好了以后就可以正常使用你就的网络了,在网上看电影,...
- 苹果手机ios在哪里打开(苹果手机如何打开ios)
-
1、开启苹果手机,进入主界面,选择“设置”菜单。2、进入“设置”菜单后,选择我们的“苹果帐号”点击进入。3、进入我们的苹果帐号菜单后,将页面滑动到最底部,选择当期操作的手机。4、点击“当期操作的手机”...
- win10误删注册表如何恢复(win10误删注册表导致开始菜单打不开)
-
如果您的Windows10注册表遇到了问题,您可以尝试以下几种方法来恢复它:1.创建注册表备份:在恢复之前,最好先创建注册表的备份以防止意外情况。打开注册表编辑器,选择“文件”菜单,然后选择“导出...
- 怎样用u盘安装系统教程(用u盘怎么安装系统)
-
制作启动盘:将U盘格式化为FAT32,然后使用Rufus或其他工具将系统镜像文件写入U盘。启动电脑:将制作好的U盘插入电脑USB接口,并开机。在电脑启动时,按下启动菜单键(通常是...
- 找不到ie浏览器怎么办(ie浏览器电脑里找不到)
-
首先我们打开“开始”菜单,看看菜单左面里有没有ie浏览器,或者直接在“所有程序”的位置,搜索“internet”,看看能不能找到我们的ie浏览器。若是可以找到这个程序,直接使用鼠标的右键,在菜单中找到...
- 以太网未连接怎么解决(怎么把以太网改成wifi)
-
1.IP地址设置是否有效按setting,选择网络,设置IP地址和网关。测量仪器应与PC机处于同一个网段,跨网段搜索连接可能会失败,若PC机IP:192.168.4.XXX,测量仪器IP地址和网关也应...
- win7如何进入bios界面(Win7如何进入bios界面)
-
在Win7开机时进入BIOS设置是通过按下特定的按键来实现的。不同的计算机品牌和型号可能需要不同的按键组合来进入BIOS设置,请注意电脑启动时屏幕上的提示信息,通常会显示要使用哪个按键来进入BIOS。...
- 装机配置表(装机配置表格下载)
-
处理器+主板:I39100+技嘉B360M套装1179散热:九州风神玄冰40099显卡:核显内存:金士顿dr426668G279固态:三星250GB860EVO(SATA3.0)33...
- apple id怎么找回密码(Apple ID怎么找回密码没有苹果手机)
-
可以用ID找回密码。因为在注册Apple账号时必须要添加邮箱或手机号码,所以当忘记密码时,可以通过输入该账号的邮箱或手机号码来找回密码。具体步骤为:在登录页面点击“忘记密码”,选择“使用其他方式找回”...
- 电脑磁盘受损怎样修复(电脑磁盘损坏)
-
方法一:一般问题修复 1.硬盘坏常的现象是开机或运行时容易蓝屏,但还是能进系统。这个问题一般比较的容易修复,主要是系统分区出问题了。我们打开DOS命令提示符窗口,输入命令“chkdskc:/f...
- mac地址在哪里查(mac地址在哪里查找啊)
-
查看电脑MAC地址的五种方法如下:方法一:通过命令提示符查看点击“开始”菜单,在“搜索程序和文件”输入框中输入“cmd”,然后回车。回车后,弹出命令符窗口,输入“ipconfig/all”,然后回车。...
- win10u盘系统盘制作(win10u盘做系统详细步骤)
-
要用U盘制作一个Windows10系统盘,您可以按照以下步骤进行操作:1. 准备一个至少8GB容量的U盘,并确保其中没有重要数据,因为制作系统盘会将U盘格式化。2.&n...
- 电脑怎么更新win10(电脑怎么更新浏览器)
-
windows10升级版本方法如下一、首先,打开要更新的电脑,进入win10系统,在桌面左下角点击“开始”按钮。二、然后,在“开始”菜单中点击“设置”点击打开。三、然后,在电脑设置中选择“更新与安全”...
- 联想电脑恢复出厂设置系统(联想系统恢复出厂系统)
-
1.打开电脑,鼠标点击屏幕左下角的【开始】图标,再点击【设置】图标。 2.进入【Windows设置】界面后,点击【更新和安全】-【恢复】。 3.点击【重置此电脑】下的【开始】按钮,根据需要选择【保...
欢迎 你 发表评论:
- 一周热门
-
-
抖音上好看的小姐姐,Python给你都下载了
-
全网最简单易懂!495页Python漫画教程,高清PDF版免费下载
-
飞牛NAS部署TVGate Docker项目,实现内网一键转发、代理、jx
-
Python 3.14 的 UUIDv6/v7/v8 上新,别再用 uuid4 () 啦!
-
python入门到脱坑 输入与输出—str()函数
-
宝塔面板如何添加免费waf防火墙?(宝塔面板开启https)
-
Python三目运算基础与进阶_python三目运算符判断三个变量
-
(新版)Python 分布式爬虫与 JS 逆向进阶实战吾爱分享
-
失业程序员复习python笔记——条件与循环
-
系统u盘安装(win11系统u盘安装)
-
- 最近发表
- 标签列表
-
- python计时 (73)
- python安装路径 (56)
- python类型转换 (93)
- python进度条 (67)
- python吧 (67)
- python的for循环 (65)
- python格式化字符串 (61)
- python静态方法 (57)
- python列表切片 (59)
- python面向对象编程 (60)
- python 代码加密 (65)
- python串口编程 (77)
- python封装 (57)
- python写入txt (66)
- python读取文件夹下所有文件 (59)
- python操作mysql数据库 (66)
- python获取列表的长度 (64)
- python接口 (63)
- python调用函数 (57)
- python多态 (60)
- python匿名函数 (59)
- python打印九九乘法表 (65)
- python赋值 (62)
- python异常 (69)
- python元祖 (57)
