nginx-2-讲解与使用
注意
1:配置文件优化,达到nginx最大性能。
2:日志文件 /usr/local/nginx/logs/access.log 会一直增大,所有日志都会记录在这。磁盘满了会出现各种问题。定时器脚本清除各种日志。
3:整个访问流程,负载均衡,主从搭建(keepalived)组合 , 单机+(keepalived)组合,邮件发送,静态资源访问(流程,缓存,防盗链,防爬虫,合并js/css请求)
4:配置文件一定要加 user root; 否则有的时候反向代理,请求别的服务器的静态资源权限不够。
1 原理简单讲解
nginx启动 ,会出现 多个进程 一个 master(管理者) 和多个 worker(工作者)。
worker进程的多少取决于你nginx.conf 中 worker_processes 配置的数量。
优点
1: 热部署:执行命令nginx -s reload 可以不用重启nginx,即可加载新的配置
原因:worker1执行任务的时候,其他worker可以加载完新配置再去执行任务。
当worker1执行 完任务的时候,也会去加载新配置。 这样任务不会中断。
2:每一个worker都是独立的进程,出了问题也不会影响其他任务。
3:设置多少合适
worker_processes(worker进程数) = 服务器cpu数
worker_connections(每个worker最大连接数)=1024*cpu数
一个nginx最大连接数=worker_processes*worker_connections;
一台nginx能承受大约5万个并发连接数。
2 使用场景
正向代理,反向代理 +负载均衡,动静分离
2.1 正向代理 :
举例: 请求第三方接口时,第三方的网络和 我们的网络不通得,但是和总部的物理机通,
我们请求 ---->总部物理机 (nginx转发请求) ------>请求第三方接口。
2.2 反向代理 +负载均衡
2.3 动静分离
3 配置文件详解(nginx.conf)
参照了
Nginx 核心配置讲解_君泽随笔(JMC)的博客-CSDN博客_nginx核心配置
3.1 全局块
影响全局的配置:配置文件 开始 到 events 中间的内容都是
3.1.1 worker(工作进程)的数量
worker_processes auto; # 建议auto 自动根据服务器核数 变成相应进程数。
# 默认值是1。一般设置为和 CPU 核数一样 # 也就是处理并发能力,数值越大处理越多,看服务器cpu数
这些可以保持默认即可
user root; # 运行用户,一定设置root
error_log logs/error.log; # Nginx 的错误日志存放目录
pid logs/nginx.pid; # Nginx 服务启动时的 pid 存放位置
3.2 events块
主要影响nginx服务器与⽤户的⽹络连接
events {#建议注释use epoll; # 使用epoll的I/O模型(如果你不知道Nginx该使用哪种轮询方法,# 会自动选择一个最适合你操作系统的) 可选值 :select、poll、kqueue、epoll、/dev/poll、eventportworker_connections 1024; # 每个进程允许最⼤并发数 ,每个 workderprocess进程⽀持的最⼤连接数 ,4核8g 可配置为 4096}
3.3 stream模块
3.4 http块
代理,缓存,日志定义等绝大多数功能和第三方模块的配置
http块 又分为两个部分: http全局块,和server块
3.4.1 http全局块
http全局块的配置:文件引入,MIME-TYPE定义,日志自定义,连接超时时间,单链接请求数上限.等
文档
wwModule ngx_http_proxy_module
log_format : 如果想配置了 $http_x_realip 则必须在 location 中加上东西。
http {include mime.types; # 外部有一个文件 mime.types 支持的数据类型default_type application/octet-stream; #设置默认的类型,会提示下载不匹配的类型文件# log_format 日志的格式以及打印哪些信息 ,"$http_x_realip" 获取转发到目标服务器的ip,而且location # 还必须加proxy_set_header配置。 log_format main '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for" "$http_x_realip" ';# access_log logs/access.log main; # 日志默认存储位置 。########## 三个同时开启 减少了网络开销,并加快了文件发送的速度 ####sendfile on; #用于开启文件高效传输模式tcp_nopush on; #当有数据时,先别着急发送, 确保数据包已经装满数据, 避免了网络拥塞tcp_nodelay on;################keepalive_timeout 65; #连接超时时间,默认为75stypes_hash_max_size 2048;server_names_hash_bucket_size 512;client_header_buffer_size 128k; # 请求头缓冲区 large_client_header_buffers 8 256k; # 请求头缓冲区不够时,使用他扩。 ##### client_max_body_size 128m; # 请求体/文件 client_body_buffer_size 128M; #请求体分配一个缓冲区 和client_max_body_size 设置成一样的值。#####server_tokens off;proxy_connect_timeout 600; #Nginx服务器与后端被代理服务器尝试连接的超时时间 默认 60 proxy_send_timeout 600; #用于配置Nginx服务器向后端被代理服务器(组)发出write请求后,等待响应的超时时间 默认 60 proxy_read_timeout 600; #用于配置Nginx服务器向后端被代理服务器(组)发出read请求后,等待响应的超时时间 默认 60 ##### 解决后端服务传输数据过多,其实是header过大的问题proxy_buffer_size 128k; proxy_buffers 2048 128k; # 用于配置接收一次被代理服务器响应数据的Proxy Buffer个数和每个Buffer的大小.proxy_busy_buffers_size 512k; # ##### 解决后端服务传输数据过多,其实是header过大的问题proxy_temp_file_write_size 512k;#开启压缩 图片 html 等;gzip on;gzip_min_length 1k; #小于设置值的文件将不会压缩;gzip_buffers 16 8k;gzip_http_version 1.0 | 1.1; # 默认在http/1.0的协议下不开启gzip压缩。不能压缩,乱码gzip_comp_level 3; # 压缩级别,1-9,数字越大压缩的越好,也越占用CPU时间gzip_types text/plain application/javascript text/css image/png image/jpeg application/xml application/json application/octet-stream ;gzip_vary on;#加载自定义的nginx.conf 解耦 server块 include /etc/nginx/conf.d/*.conf;#负载均衡配置upstream test.com {#upstream的负载均衡 轮询(默认)。server 192.168.135.130:80 ;server 192.168.135.128:80 ; #================== #upstream的负载均衡,weight是权重,权值越高被分配到的几率越大。server 192.168.135.130:80 weight=4;server 192.168.135.128:80 weight=6;#================== #每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题ip_hash;server 192.168.135.130:80;server 192.168.135.128:80;#==============================# Sticky是nginx的一个模块,它是基于cookie的一种nginx的负载均衡解决方案,
#通过分发和识别cookie,来使同一个客户端的请求落在同一台服务器上,默认标识名为routesticky;server 192.168.135.130:80;server 192.168.135.128:80;}server {listen 80; 设置监听的地址和端口server_name localhost; #设置server name,可以以空格隔开写多个并支持正则表达式,如*.magedu.com www.magedu.* #charset koi8-r; #设置编码格式,默认是俄语格式,可以改为utf-8#access_log logs/host.access.log main;# 解耦 location块include /etc/nginx/default.d/*.conf;location / {root html; # ngxin跟目录index helo.html index.html index.htm; # /usr/local/nginx/html 下先找到哪个就返回哪个 ######## 在这配置这4个 才好使 $http_x_realip ######proxy_set_header Host $http_host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;######## }}
}
3.4.2 server块
虚拟主机的配置,监听端⼝的配置,请求转发、反向代理、负载均衡
虚拟主机理解:从用户角度看,和一台独立的硬件主机完全一样,节省成本
每一个http块可以包括多个server块,而每一个server块就相当于一个虚拟主机。
而每一个server块,可以同时包含多个location
1 server块
本虚拟机主机的监听配置,和本虚拟机主机的名称或IP配置。
2 location 块
一个server可以配置多个location 。主要作用是,基于nginx服务器接收到的请求一个匹配,对特定请求进行处理。地址重定向,数据缓存,应答控制,许多第三方配置也在这里配置。
5 案例实战
5.1 了解nginx的目录结构
5.2默认配置解读
server_name:好像只能配置本机的ip ,不能写别的ip ,但是可以配置域名,域名下可以配置多个ip
域名和ip是多对多关系
proxy_pass:支持ip 和域名, 但是不支持https方式代理。
1:= 不含有正则,严格匹配url, 匹配成功就会停止向下搜索url
2: ~ 正则 ,并且区分大小写
3: ~* 正则,不区分大小写
4:
监听 server_name 的ip 和 listen的端口,访问的url 匹配规则符合,则直接执行符合的 location server {listen 80; #监听80端口# listen ip:端口 # 当listen出现了ip时,server_name就失去了意义。所以不配置也罢了。server_name localhost; #好像只能监听本机地址location / {root html; # 根目录是 htmlindex index.html index.htm; #从左到右依次匹配,先匹配上谁就展示谁}location = /50x.html {root html;}#正则方式 不区分大小写 路径带有 js或img或css都会走这个location ~*/(js|img|css) {root /home/web/html ;index home.html;}}
5.3 访问tomcat下的接口
信息:
nginx安装的ip http://192.168.135.4
访问就要加项目名了 demotomcat。jar命令部署就不用加了
项目是在tomcat下:访问接口 http://192.168.135.4:8080/demotomcat/test/test
普通转发
http://192.168.135.4/demotomcat/test/test
通过nginx 访问到tomcat接口 就等于 http://192.168.135.4:8080/demotomcat/test/test
server {listen 80;server_name 192.168.135.4;location / {root html;index hello.html index.html index.htm;proxy_pass http://127.0.0.1:8080; # 代理到 本机的8080 ,
# 上面两行没事的,不起作用好像}}
正则路径匹配:~
128上,8080,8081 是jar命令方式部署的。不用加项目名。
路径匹配上了,并且把路径上的pro带到了 代理的url上了。
http://192.168.135.4:9999/pro/test1 等于 http://192.168.135.128:8080/pro/test1
server {listen 9999;server_name 192.168.135.4;location ~ /pro {proxy_pass http://192.168.135.128:8080; # 代理到别的机器的 jar包上}location ~ /dev {proxy_pass http://192.168.135.128:8081; # 代理到别的机器的8081 }}
后端接口
按照我们以往的逻辑 应该这样访问:http://192.168.135.4:9999/pro/pro/test1 才对
但是 ~ /pro 会带到url来 我们可以配置项目访问路径 context-path ,替换 ~ /pro 的它
路径匹配方式
http://192.168.135.4:9999/pro/test1http://192.168.135.128:8080/pro/test1
server {listen 9999;server_name 192.168.135.4;location /pro/ {proxy_pass http://192.168.135.128:8080/pro/; # 代理到别的机器的 jar包上}location /dev/ {proxy_pass http://192.168.135.128:8081/dev/; # 代理到别的机器的8081 }}
负载均衡:
http://192.168.135.4/pro/test1 轮询访问
#负载均衡配置upstream myserver {#upstream的负载均衡 轮询(默认)。server 192.168.135.128:8080 ;server 192.168.135.128:8081 ; }server {listen 9999;server_name 192.168.135.4;location / {proxy_pass http://myserver; proxy_connect_timeout 600;}}
5.9 静态资源访问
html,css,image 等访问
expires 设置缓存时间。
防盗链(图片等)
两种方式:nginx的root、alias指令区别
说明 | 示例值 |
现有照片名称 | a.png |
root方式 | location上路径自动带到url上 |
alias方式 | location上路径不会带到url上 |
访问图片的地址为 | http://192.168.135.4:9002/image/a.png或者 http://192.168.135.4:9001/image/a.png |
root配置信息:
server {listen 9001;server_name 192.168.135.4;location /image/ {root /html/; #方式一 必须根目录下创建 html/image/# root html; #方式二 nginx安装目录下 创建 html/image/# root html/; #方式三 nginx安装目录下 创建 html/image/}}
alias配置信息:
server {listen 9002; server_name 192.168.135.4;location /image/ { alias /html/image/;#方式一 根目录下创建 /html/image/alias html/image/;#方式二 nginx安装目录下创建 /html/image/} }
autoindex : 访问目录即可查看,该目录下的静态资源。
server {listen 9002; server_name 192.168.135.4;location /image/ { alias /html/image/;autoindex on; } }
前端部署 rewrite/try_files
#方式一:直接让你访问静态文件
location / {root /data/admin ;index home.html;proxy_set_header Host $http_host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;}nginx安装目录下 html/image/b.png
#方式二:1 访问的没有一个匹配的,会有一个兜底的 。/image/b.png例如:访问 http://192.168.135.4/a 就会出现 图片2 直接访问 http://192.168.135.4 会依次查看 index是否有符合的。有则展示,无则走兜底3 只要你访问的路径是有东西的,并且写的对 就会展示。(try_files)location / {root html;index hello.html index.html index.htm;try_files $uri $uri/ /image/b.png;}===============================location / {root /opt/dist;index index.html;# 尝试解析文件/文件夹,解析不到,跳到后端处理try_files $uri $uri/ @mq;}location @mq {# 负载均衡的配置proxy_pass http://mydjango;# 重定向也可以# rewrite ^/(.*)$ http://www.baidu.com; # 跳转到百度页面}
防盗链:
原因:
我们访问网站首页 home.html, 但是home.html 内 用了背景图 b.png 。浏览器会在发送一次请求,但是请求头会带 Referer:你nginx服务器的ip 。这样获取 b.png。
解决办法:
例如:前端的页面中home.html 中首页背景图片不想被别人访问,盗用。
直接返回错误码方式
#请求路径结尾 这些都 拦截 location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|mp4|ico)$ {expires 30d; #缓存30天access_log off; #不记录日志valid_referers localhost; #有域名最好写域名, 检测来源的网址是不是填写的该地址if ($invalid_referer){#如果是无效的 返回403return 403;} root /home/web/html ;index home.html;}
反会自定义错误页面
# 请求路径结尾 这些都 拦截 location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|mp4|ico)$ {expires 30d; #缓存30天access_log off; #不记录日志# 防盗链valid_referers localhost; #有域名最好写域名, 检测来源的网址是不是填写的该地址if ($invalid_referer){#如果是无效的 返回403return 403; # 会走底下 ---> error_page --> location = /50x.html} root /home/web/html ;index home.html;}error_page 403 /50x.html;location = /50x.html {root html; }
静态资源优化,防止爬虫
静态资源优化,可以减少连接请求数,同时也不需要对这些资源请求打印日志。但副作用是资源更新可能无法及时。
expires 30s; #缓存30秒
expires 30m; #缓存30分钟
expires 2h; #缓存2小时
expires 30d; #缓存30天
server {# 防爬虫 文件夹下有 agent_deny.confinclude /etc/nginx/default/*.conf; # 后缀结尾 视频 图片location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|mp4|ico)$ {expires 30d;access_log off;# 防盗链valid_referers localhost; #有域名最好写域名, 检测来源的网址是不是填写的该地址if ($invalid_referer){#如果是无效的 返回403return 403; # 会走底下 ---> error_page --> location = /50x.html} }# 字体location ~ .*\.(eot|ttf|otf|woff|svg)$ {expires 30d;access_log off;}# js、csslocation ~ .*\.(js|css)?$ {expires 7d;access_log off;}# 禁止访问的文件或目录location ~ ^/(\.user.ini|\.ht|\.git|\.svn|\.project|LICENSE|README.md) {deny all;} location /.well-known {allow all;} }
agent_deny.conf
#禁止Scrapy等工具的抓取
if ($http_user_agent ~* (Scrapy|Curl|HttpClient)) {return 403;
}
#禁止指定UA及UA为空的访问
if ($http_user_agent ~ "WinHttp|WebZIP|FetchURL|node-superagent|java/|FeedDemon|Jullo|JikeSpider|Indy Library|Alexa Toolbar|AskTbFXTV|AhrefsBot|CrawlDaddy|Java|Feedly|Apache-HttpAsyncClient|UniversalFeedParser|ApacheBench|Microsoft URL Control|Swiftbot|ZmEu|oBot|jaunty|Python-urllib|lightDeckReports Bot|YYSpider|DigExt|HttpClient|MJ12bot|heritrix|EasouSpider|Ezooms|BOT/0.1|YandexBot|FlightDeckReports|Linguee Bot|^$" ) {return 403;
}
#禁止非GET|HEAD|POST方式的抓取
if ($request_method !~ ^(GET|HEAD|POST)$) {return 403;
}
合并客户端请求(concat模块)
例如:加载一个html可能要加载很多js,假如需要三个js,就会多3个请求js的请求。为了提高效率,可以合并为一个请求,同时获取这三个js. 淘宝就是这样的。因为是淘宝开发的。
安装过程在我的文章 nginx安装里:简单应用
location /static/css/ {concat on; #开启concat_max_files 20; #最多20个
}location /static/js/ {concat on;concat_max_files 30;#最多30个
}
合并文件输出(ssi模块)
文档讲解
Module ngx_http_ssi_module
支持插入另一个html
<!--#include virtual="head.html" -->a.html内容
<!--#include virtual="footer.html" -->
三个作用域下面(http, server, location)
server {
...
ssi on; #开启
ssi_last_modified on;# 有缓存的时候用合适
}
很多命令 比如判断等。
高可用集群模式
单机版(keepalived)
单机模式下也可以考虑安装keepalived 他可以检测nginx是否启动,执行脚本让nginx自动启动。短暂的访问失效
主从版(keepalived)
优点:容灾
缺点:资源浪费,从机基本用不到。主机挂掉也会脚本重启。
1:准备两台服务器 ,192.168.135.4,192.168.135.128
2:在这两台服务器上都需要安装nginx,和keppalived
3:主机和从机的keppalived,只有 priority ,state
4:先启动nginx 在启动keppalived。
5:对外访问的ip: 192.168.135.9
yum安装方式:默认安装位置 etc/keepalived/keepalived.conf
yum install keepalived -y
keepalived.conf
主从配置 修改属性位置:priority,state ,mtp_server
注意:每个模块名和 { 要有一个空格,
日志文件默认位置是系统日志:/var/log/messages 查看脚本不启动等等都需要看日志
! Configuration File for keepalived
#全局定义
global_defs {
#######################邮件配置可以删除################# 发送邮件报警 不建议用。需系统开启sendmail服务,建议用第三方独立监控服务。notification_email {acassen@firewall.locfailover@firewall.locsysadmin@firewall.loc}#指定发件人,可选配置。notification_email_from Alexandre.Cassen@firewall.loc# 指定发送邮件的smtp服务器地址,可选配置。写本服务器ipsmtp_server 192.168.200.1smtp_connect_timeout 30 # 连接smtp的超时时间
######################邮件配置可以删除######################router_id LVS_DEVEL #用户标识本节点的名称
}
#声明检查脚本
vrrp_script chk_nginx { script "/etc/keepalived/nginx_check.sh"interval 2 #检测脚本执行的间隔 监控脚本的执行时间要大于advert_int(3秒不行就5秒weight 2
}# 定义一个vrrp_install实例,名称为VI_1
vrrp_instance VI_1 {state MASTER # 实例的角色状态,主机 AMSTER 从机 BACKUPinterface ens33 # 对外提供服务的网络接口,如eth0,eth1. ifconfig查看virtual_router_id 51 #虚拟路由ID标识,主备服务器配置中相同实例的ID必须一致,否则将出现脑裂问题。priority 100 # priority表示实例优先级,数字越大,优先级越高 主机高于从机advert_int 1 # advert_int为同步通知间隔。主备之间通信检查的时间间隔,默认为1秒。 # 权限认证配置。authentication { #设置验证类型和密码,MASTER和BACKUP必须使用相同的密码才能正常通信auth_type PASSauth_pass 1111}# 虚拟IP地址;可以配置多个IP,每个IP占一行。注意,这里的IP就是在工作中需要和域名绑定的ip,# 即可配置的高可用服务监听的ip保持一致。virtual_ipaddress {192.168.135.9 # 对外访问的ip}# 启动脚本 必须和上面的声明 名称一致track_script {chk_nginx #执行 Nginx 监控的服务}# 下面是配置的邮件发送脚本,不想使用此功能 可以删除########### #定义通知脚本,当前节点成为主节点时触发的脚本notify_master "/etc/keepalived/notify.sh master"#定义通知脚本,当前节点转为备节点时触发的脚本notify_backup "/etc/keepalived/notify.sh backup"#定义通知脚本,当前节点转为“失败”状态时触发的脚本notify_fault "/etc/keepalived/notify.sh fault"#上面 配置的邮件发送脚本,不想使用此功能 可以删除########### }
nginx_check.sh
1:脚本加权限: chmod u+x nginx_check.sh
chmod 744 nginx_check.sh
2:先执行一下脚本,看是否是可执行脚本。
3:脚本详解,先查看nginx是否启动,没有启动会执行启动命令,过了2秒还没有启动成功,会关闭 keepalived 服务,因为不关闭它,无法从主服务器切换到从服务器
4 解决脚本不执行 参考 keepalived配置检测脚本问题 - 知乎
#!/bin/bash
# echo 1 >> myid
A=`ps -C nginx --no-header |wc -l`
# 如果等于0 就 nginx没有启动
if [ $A -eq "0" ];then
cd /usr/local/nginx/sbin/
./nginx
sleep 2
# 如果等于0 就 nginx没有启动 keepalived也必须关闭,否则依然访问不到从nginx
if [ `ps -C nginx --no-header |wc -l` -eq 0 ]; then# killall keepalivedsystemctl stop keepalived.servicefifi
启动服务前必须执行命令
1:脚本必须执行: chmod u+x nginx_check.sh
chmod 744 nginx_check.sh
2:暂时版:setenforce 0
永久版: sed -i "s/^SELINUX=.*/SELINUX=disabled/g" /etc/selinux/config
启动服务
启动nginx 和 keepalived
./nginx
启动 keepalived
systemctl start keepalived.service
停止 keepalived
systemctl stop keepalived.service
重启
systemctl restart keepalived.service
验证
直接访问 http://192.168.135.9/
关闭主服务器上的 nginx 不关闭 keepalived 。依然不能访问到从nginx. 报错。所以脚本上必须也要关闭keepalived
关闭主服务器上的nginx,和 keepalived 。可以访问到从服务器的nginx
邮件配置
1:邮箱要开启所有服务,要不收不到邮件。
2:邮件脚本也要按照上面的脚本方式赋予权限等操作
yum install mailx -y
vim ~/.mailrc 或 /etc/mail.rc
set from=861157070@qq.com # aa@163.com
set smtp=smtp.qq.com # .163.com
set smtp-auth-user=861157070@qq.com #aa@163.com
set smtp-auth-password=授权码 #邮箱需要开启POP3/SMTP服务并 填写授权码
set smtp-auth=login
set ssl-verify=ignore
测试:echo test mail | mail -s testa 收件人id@qq.com
notify.sh 可以执行一下脚本测试发邮件
#!/bin/bash
#
contact='861157070@qq.com' #可以结合邮件设置向QQ发送邮件,在全局中的notification_email也要设置
notify() {
mailsubject="$(hostname) to be $1, vip floating" # 邮件标题
mailbody="$(date +'%F %T'): vrrp transition, $(hostname) changed to be $1"
echo "$mailbody" | mail -s "$mailsubject" $contact
}
case $1 in
master)
notify master
;;
backup)
notify backup
;;
fault)
notify fault
;;
*)echo "Usage: $(basename $0) {master|backup|fault}"
exit 1
;;
esac
chmod +x /etc/keepalived/notify.sh
keepalived互为主备
Keepalived+LVS+nginx搭建nginx高可用集群
nginx-2-讲解与使用相关推荐
- nginx:模块讲解
本文讲解一些nginx安装时的一些模块. 1.stub_status nginx中的stub_status模块主要用于查看Nginx的一些状态信息. 本模块默认没有安装,需要编译安装.nginx开启s ...
- nginx(详细讲解)
nginx讲解 nginx 是一个功性能的http和反向代理web服务. 一.安装nginx 步骤: (1)设置IP (2)配置yum源 (3)#systemctl enable nginx ///开 ...
- nginx配置文件讲解(二)
原文:http://www.blogjava.net/xiaomage234/archive/2011/09/08/358247.html 配置环境: 三台CentOS5.3,一台做nginx代理,2 ...
- nginx 模块讲解
1. 通用配置选项: --prefix=<path> 指定Nginx的安装路径,所有其他的路径都要依赖于该选项 --sbin-path=<path> ...
- nginx 目录讲解
转载于:https://www.cnblogs.com/zquan/p/9833885.html
- Nginx讲解(一)Nginx介绍以及同步异步阻塞非阻塞介绍
一.Nginx概念讲解 Nginx是一个高性能的HTTP和反向代理服务,也是一个IMAP/POP3/SMTP服务 Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3) ...
- 2018最新Nginx从入门到精通5阶段视频教程附代码(Http代理+负载均衡+静动分离)
课程介绍 系统讲解Nginx ,课程通用性非常高,几乎所有与后台相关的技术人员都会用到,了解Nginx 的人很多,但真正掌握Nginx 的却很少,系统掌握Nginx配置与快速搭建高可用架构的技术方法. ...
- nginx的负载均衡模块详解
反向代理与负载均衡的概念: Nginx仅仅是作为nginx proxy反向代理使用,nginx其实是反向代理,只不过是有负载均衡的功能! 安装Nginx负载均衡 官网Nginx模块讲解 模块详解 up ...
- Docker实战之通过nginx镜像来部署静态SPA项目
Docker中安装Nginx 本章主要是教大家怎么在Docker 中使用nginx 文章目录 Docker中安装Nginx 前言 一.Docker中安装nginx 1.1搜索nginx镜像 1.2拉取 ...
- Linux环境,手把手带你实现一个Nginx模块,深入了解Nginx丨惊群效应|error|负载均衡|Openresty丨C/C++Linux服务器开发丨中间件
Linux环境,手把手带你实现一个Nginx模块,深入了解Nginx 视频讲解如下,点击观看: Linux环境,手把手带你实现一个Nginx模块,深入了解Nginx丨惊群效应|error|负载均衡|O ...
最新文章
- linux查找以h结尾的文件,【linux_笔记】Linux_文件查找(find)详解特殊权限
- JavaScript学习总结(十六)——Javascript闭包(Closure)
- RN中布局样式的写法
- pycharm快捷键不能用了
- 防止UI界面被输入法遮挡(画面随输入法自适应)
- SpringSecurity权限管理相关对象介绍
- 收集Linux常用命令
- rocketmq顺序消费问题
- IDEA安装插件IDE Eval Reset
- 第五篇 应用Java
- word分栏 公式居中对齐 自动编号
- VMware网络NAT模式无法连接解决方法
- 【机器学习中的数学】基函数与函数空间
- 为什么要在csdn开一个博客
- 数据结构复习题(绪论)
- wifi分析仪怎么看哪个信道好_(一百零四)探讨WiFi分析仪如何获取信道的?
- matlab画简单长方形,matlab在图像中画长方形(框)
- [Shell]尚硅谷大数据技术之Shell--笔记(3)
- 市政下水道疏通机器人_市政下水道疏通机器人 3D模型(SolidWorks设计,提供Sldprt/Sldasm/SLDDRW/dwg文件)...
- dos2unix命令将dos文件转换为unix格式