百科生活 投稿
关于【nginx命令】,nginx命令学习笔记,今天小编给您分享一下,如果对您有所帮助别忘了关注本站哦。
- 内容导航:
- 1、nginx命令:最全总结!Nginx 操作详解
- 2、nginx命令,nginx命令学习笔记
1、nginx命令:最全总结!Nginx 操作详解
本文将会从:安装 -> 全局配置 -> 常用的各种配置 来书写,其中常用配置写的炒鸡详细,需要的童鞋可以直接滑倒相应的位置查看。
安装 nginx
下载 nginx 的压缩包文件到根目录,官网下载地址:http://nginx.org/download/nginx-x.xx.xx.tar.gz
yum update #更新系统软件cd /wget nginx.org/download/nginx-1.17.2.tar.gz
解压 tar.gz 压缩包文件,进去 nginx-1.17.2
tar -xzvf nginx-1.17.2.tar.gzcd nginx-1.17.2
进入文件夹后进行配置检查
./configure
通过安装前的配置检查,发现有报错。检查中发现一些依赖库没有找到,这时候需要先安装 nginx 的一些依赖库
yum -y install pcre* #安装使nginx支持rewriteyum -y install gcc-c++yum -y install zlib*yum -y install openssl openssl-devel
再次进行检查操作 ./configure 没发现报错显示,接下来进行编译并安装的操作
// 检查模块支持 ./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_addition_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_auth_request_module --with-http_random_index_module --with-http_secure_link_module --with-http_degradation_module --with-http_slice_module --with-http_stub_status_module --with-mail --with-mail_ssl_module --with-stream --with-stream_ssl_module --with-stream_realip_module --with-stream_ssl_preread_module --with-threads --user=www --group=www
这里得特别注意下,你以后需要用到的功能模块是否存在,不然以后添加新的包会比较麻烦。
查看默认安装的模块支持
命令ls nginx-1.17.2 查看 nginx 的文件列表,可以发现里面有一个 auto 的目录。
在这个 auto 目录中有一个 options 文件,这个文件里面保存的就是 nginx 编译过程中的所有选项配置。
通过命令:cat nginx-1.17.2/auto/options | grep YES就可以查看
nginx 编译安装时,怎么查看安装模块
编译并安装
make && make install
这里需要注意,模块的支持跟后续的 nginx 配置有关,比如 SSL,gzip 压缩等等,编译安装前最好检查需要配置的模块存不存在。
查看 nginx 安装后在的目录,可以看到已经安装到 /usr/local/nginx 目录了
whereis nginx$nginx: /usr/local/nginx
启动 nginx 服务
cd /usr/local/nginx/sbin/./nginx
服务启动的时候报错了:nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use) ,通过命令查看本机网络地址和端口等一些信息,找到被占用的 80 端口 netstat -ntpl 的 tcp 连接,并杀死进程(kill 进程 pid)
netstat -ntplkill 进程PID
继续启动 nginx 服务,启动成功
./nginx
在浏览器直接访问 ip 地址,页面出现 Welcome to Nginx! 则安装成功。
nginx 配置
基本结构
main # 全局配置,对全局生效├── events # 配置影响 nginx 服务器或与用户的网络连接├── http # 配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置│ ├── upstream # 配置后端服务器具体地址,负载均衡配置不可或缺的部分│ ├── server # 配置虚拟主机的相关参数,一个 http 块中可以有多个 server 块│ ├── server│ │ ├── location # server 块可以包含多个 location 块,location 指令用于匹配 uri│ │ ├── location│ │ └── ...│ └── ...└── ...
主要配置含义
- main:nginx 的全局配置,对全局生效。
- events:配置影响 nginx 服务器或与用户的网络连接。
- http:可以嵌套多个 server,配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置。
- server:配置虚拟主机的相关参数,一个 http 中可以有多个 server。
- location:配置请求的路由,以及各种页面的处理情况。
- upstream:配置后端服务器具体地址,负载均衡配置不可或缺的部分。
nginx.conf 配置文件的语法规则
- 配置文件由指令与指令块构成
- 每条指令以 “;” 分号结尾,指令与参数间以空格符号分隔
- 指令块以 {} 大括号将多条指令组织在一起
- include 语句允许组合多个配置文件以提升可维护性
- 通过 # 符号添加注释,提高可读性
- 通过 $ 符号使用变量
- 部分指令的参数支持正则表达式,例如常用的 location 指令
内置变量
nginx 常用的内置全局变量,你可以在配置中随意使用:
nginx 常用功能
常用命令
这里列举几个常用的命令:
nginx -s reload # 向主进程发送信号,重新加载配置文件,热重启nginx -s reopen # 重启 Nginxnginx -s stop # 快速关闭nginx -s quit # 等待工作进程处理完成后关闭nginx -T # 查看当前 Nginx 最终的配置nginx -t -c <配置路径> # 检查配置是否有问题,如果已经在配置目录,则不需要 -c
以上命令通过nginx -h就可以查看到,还有其它不常用这里未列出。
Linux 系统应用管理工具 systemd 关于 nginx 的常用命令:
systemctl start nginx # 启动 Nginxsystemctl stop nginx # 停止 Nginxsystemctl restart nginx # 重启 Nginxsystemctl reload nginx # 重新加载 Nginx,用于修改配置后systemctl enable nginx # 设置开机启动 Nginxsystemctl disable nginx # 关闭开机启动 Nginxsystemctl status nginx # 查看 Nginx 运行状态
配置 nginx 开机自启
利用 systemctl 命令:
如果用 yum install 命令安装的 nginx,yum 命令会自动创建 nginx.service 文件,直接用命令:
systemctl enable nginx # 设置开机启动 Nginxsystemctl disable nginx # 关闭开机启动 Nginx
就可以设置开机自启,否则需要在系统服务目录里创建 nginx.service 文件。
创建并打开 nginx.service 文件:
vi /lib/systemd/system/nginx.service
内容如下:
[Unit]Description=nginxAfter=network.target[Service]Type=forkingExecStart=/usr/local/nginx/sbin/nginxExecReload=/usr/local/nginx/sbin/nginx -s reloadExecStop=/usr/local/nginx/sbin/nginx -s quitPrivateTmp=true[Install]WantedBy=multi-user.target
:wq保存退出,运行systemctl daemon-reload使文件生效。
这样便可以通过以下命令操作 nginx 了:
systemctl start nginx.service # 启动nginx服务systemctl enable nginx.service # 设置开机启动systemctl disable nginx.service # 停止开机自启动systemctl status nginx.service # 查看服务当前状态systemctl restart nginx.service # 重新启动服务systemctl is-enabled nginx.service #查询服务是否开机启动
通过开机启动命令脚本实现开机自启
创建开机启动命令脚本文件:
vi /etc/init.d/nginx
在这个 nginx 文件中插入一下启动脚本代码,启动脚本代码来源网络复制,实测有效:
#! /bin/bash# chkconfig: - 85 15PATH=/usr/local/nginxDESC="nginx daemon"NAME=nginxDAEMON=$PATH/sbin/$NAMECONFIGFILE=$PATH/conf/$NAME.confPIDFILE=$PATH/logs/$NAME.pidscriptNAME=/etc/init.d/$NAMEset -e[ -x "$DAEMON" ] || exit 0do_start() {$DAEMON -c $CONFIGFILE || echo -n "nginx already running"}do_stop() {$DAEMON -s stop || echo -n "nginx not running"}do_reload() {$DAEMON -s reload || echo -n "nginx can't reload"}case "$1" instart)echo -n "Starting $DESC: $NAME"do_startecho ".";;stop)echo -n "Stopping $DESC: $NAME"do_stopecho ".";;reload|graceful)echo -n "Reloading $DESC configuration..."do_reloadecho ".";;restart)echo -n "Restarting $DESC: $NAME"do_stopdo_startecho ".";;*)echo "Usage: $scriptNAME {start|stop|reload|restart}" >&2exit 3;;esacexit 0
设置所有人都有对这个启动脚本 nginx 文件的执行权限:
chmod a+x /etc/init.d/nginx
把 nginx 加入系统服务中:
chkconfig --add nginx
把服务设置为开机启动:
其中第 2 点,普遍是结合前端打包的时候打包成 gzip 文件后部署到服务器上,这样服务器就可以直接使用 gzip 的文件了,并且可以把压缩比例提高,这样 nginx 就不用压缩,也就不会影响速度。一般不追求极致的情况下,前端不用做任何配置就可以使用啦~ 附前端 webpack 开启 gzip 压缩配置,在 vue-cli3 的 vue.config.js 配置文件中: nginx 本身也是一个静态资源的服务器,当只有静态资源的时候,就可以使用 nginx 来做服务器: 这样如果访问 http://ip 就会默认访问到 /usr/local/app 目录下面的 index.html,如果一个网站只是静态页面的话,那么就可以通过这种方式来实现部署,比如一个静态官网。 就是把动态和静态的请求分开。方式主要有两种: 注意上面设置了 expires,当 nginx 设置了 expires 后,例如设置为:expires 10d; 那么,所在的 location 或 if 的内容,用户在 10 天内请求的时候,都只会访问浏览器中的缓存,而不会去请求 nginx 。 对于大流量恶意的访问,会造成带宽的浪费,给服务器增加压力。可以通过 nginx 对于同一 IP 的连接数以及并发数进行限制。合理的控制还可以用来防止 DDos 和 CC 攻击。 关于请求限制主要使用 nginx 默认集成的 2 个模块: 涉及到的配置主要是: 通过 limit_req_zone 限制请求数 如果共享内存空间被耗尽,服务器将会对后续所有的请求返回 503 (Service Temporarily Unavailable) 错误。 当多个 limit_conn_zone 指令被配置时,所有的连接数限制都会生效。比如,下面配置不仅会限制单一 IP 来源的连接数,同时也会限制单一虚拟服务器的总连接数: 通过 limit_conn_zone 限制并发连接数 限制平均每秒不超过一个请求,同时允许超过频率限制的请求数不多于 5 个。 如果不希望超过的请求被延迟,可以用 nodelay 参数,如: limit_req zone=creq burst=5 nodelay; 这里只是简单讲讲,让大家有这个概念,配置的时候可以深入去找找资料。 正向代理,意思是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端才能使用正向代理,比如我们使用的 VPN 服务就是正向代理,直观区别(图片来源于 前端开发者必备的 Nginx 知识): 配置正向代理: 正向代理的对象是客户端,服务器端看不到真正的客户端。 以上设置就能防止其它网站利用外链访问我们的图片,有利于节省流量 根据用户设备不同返回不同样式的站点,以前经常使用的是纯前端的自适应布局,但是复杂的网站并不适合响应式,无论是复杂性和易用性上面还是不如分开编写的好,比如我们常见的淘宝、京东。 根据用户请求的 user-agent 来判断是返回 PC 还是 H5 站点: 新建一个 server 即可: 这里我使用的是 certbot 免费证书,但申请一次有效期只有 3 个月(好像可以用 crontab 尝试配置自动续期,我暂时没试过): 先安装 certbot 申请证书(注意:需要把要申请证书的域名先解析到这台服务器上,才能申请): 执行上面指令,按提示操作。 Certbot 会启动一个临时服务器来完成验证(会占用 80 端口或 443 端口,因此需要暂时关闭 Web 服务器),然后 Certbot 会把证书以文件的形式保存,包括完整的证书链文件和私钥文件。 文件保存在 /etc/letsencrypt/live/ 下面的域名目录下。 修改 nginx 配置: 以上配置选择自己需要的一条即可,不用全部加。 vue-router官网只有一句话try_files $uri $uri/ /index.html;,而上面做了一些重定向处理。 当主 nginx 服务器宕机之后,切换到备份的 nginx 服务器 首先安装 keepalived: 然后编辑/etc/keepalived/keepalived.conf配置文件,并在配置文件中增加vrrp_script定义一个外围检测机制,并在vrrp_instance中通过定义track_script来追踪脚本执行过程,实现节点转移: 其中检测脚本nginx_check.sh,这里提供一个: 复制一份到备份服务器,备份 nginx 的配置要将 state后改为BACKUP,priority 改为比主机小。 设置完毕后各自 service keepalived start 启动,经过访问成功之后,可以把 Master 机的 keepalived 停掉,此时 Master 机就不再是主机了 service keepalived stop,看访问虚拟 IP 时是否能够自动切换到备机 ip addr。 再次启动 Master 的 keepalived,此时 vip 又变到了主机上。 配置高可用集群的内容来源于:Nginx 从入门到实践,万字详解! nginx 的 http_proxy 模块,提供类似于 Squid 的缓存功能,使用 proxy_cache_path 来配置。 nginx 可以对访问过的内容在 nginx 服务器本地建立副本,这样在一段时间内再次访问该数据,就不需要通过 nginx 服务器再次向后端服务器发出请求,减小数据传输延迟,提高访问速度: 上面的配置表示: nginx 提供一块 10 M 的内存用于缓存,名字为 my_cache, levels 等级为 1:2,缓存存放的路径为 usr/local/cache。 访问日志默认是注释的状态,需要可以打开和进行更详细的配置,一下是 nginx 的默认配置: 错误日志放在 main 全局区块中,童鞋们打开 nginx.conf 就可以看见在配置文件中和下面一样的代码了: nginx 错误日志默认配置为: error_log logs/error.log error; 和之前的功能类似,有时候我们希望把二级或者三级域名链接重写到我们希望的路径,让后端就可以根据路由解析不同的规则: 或许你不知道,nginx 的配置文件使用的是一门微型的编程语言。既然是编程语言,一般也就少不了“变量”这种东西,但是在 nginx 配置中,变量只能存放一种类型的值,因为也只存在一种类型的值,那就是字符串。 例如我们在 nginx.conf 中有这样一行配置: 上面使用了 set 配置指令对变量 $name进行了赋值操作,把 "chroot" 赋值给了 $name。nginx 变量名前面有一个 $ 符号,这是记法上的要求。所有的 Nginx 变量在 Nginx 配置文件中引用时都须带上 $ 前缀。这种表示方法和 Perl、PHP 这些语言是相似的。 这种表示方法的用处在哪里呢,那就是可以直接把变量嵌入到字符串常量中以构造出新的字符串,例如你需要进行一个字符串拼接: 以上当匹配成功的时候就会返回字符串 "hello world" 了。需要注意的是,当引用的变量名之后紧跟着变量名的构成字符时(比如后跟字母、数字以及下划线),我们就需要使用特别的记法来消除歧义,例如: 这里,我们在配置指令的参数值中引用变量$temp的时候,后面紧跟着world这个单词,所以如果直接写作"$tempworld" 则 nginx 的计算引擎会将之识别为引用了变量 $tempworld. 为了解决这个问题,nginx 的字符串支持使用花括号在 $之后把变量名围起来,比如这里的${temp},所以 上面这个例子返回的还是 "hello world": 还需要注意的是,若是想输出$符号本身,可以这样做: 上面用到了标准模块 ngx_geo 提供的配置指令 geo 来为变量 $dollar赋予字符串"$" ,这样,这里的返回值就是 "hello world: $" 了。 按字母顺序,变量名与对应定义: 核心模块: 标准 HTTP 模块: 可选 HTTP 模块: 邮件服务模块: 第三方模块: 感谢阅读~ nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器和通用 TCP/UDP 代理服务器。由俄罗斯的程序设计师Igor Sysoev所开发,供俄国大型的入口网站及搜索引擎Rambler(俄文:Рамблер)使用。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好。 nginx因为它的稳定性、丰富的模块库、灵活的配置和低系统资源的消耗而闻名.业界一致认为它是Apache2.2+mod_proxy_balancer的轻量级代替者,不仅因为响应静态页面的速度非常快,而且它的模块数量是Apache的2/3。对proxy和rewrite模块的支持很彻底,还支持mod_fcgi、ssl、vhosts ,适合用做mongrel clusters前端HTTP响应。nginx和Apache一样用模块化设计,nginx模块包括内置模块和第三方模块,其中内置模块中包含主模块和事件模块。 因此作为程序员可以为nginx设计第三方模块,不过与httpd不同的是,nginx早期包括现在的版本虽然是模块化的,也就意味着说我们可以自行开发第三方模块对Nginx进行扩展,但是nginx不支持模块动态装卸载的,也就是说编译的时候只能静态直接编译进nginx而且随nginx的启动而启动,即模块编译好之后可以直接使用,但只能直接编译成nginx组成部分,只要nginx启动,那么这个模块就一定会启动,它不支持动态装卸载。但是Tengine对nginx的改进使得Tengine支持模块动态装卸载。 这是已经经过市场广泛验证的;它的高可靠性是靠其特殊的工作机制来实现的,其高可靠性依赖于主控进程与工作进程或工作线程的架构来实现的。虽然形容为特殊但是其实httpd也是这么工作的。nginx的组成部分实际上是由一个主控进程master加多个子进程worker共同组成的,它有一个主控进程master,主控进程并不负责接收并响应任何用户请求,主控进程负责生成多个工作进程worker。其主控进程主要负责读取并验证即解析配置文件、创建绑定或关闭套接字、以及启动或终止维护worker进程的个数、还有无需重启进程让新配置文件中的新配置加载甚至于完成平滑版本升级等等。而worker子进程有多种种类,有的worker是实现缓存加载的,这在其反向代理模式中才有用、而有些是负责响应用户请求说白了就是接收传入并处理客户端的连接请求的、此外worker进程中还有一种进程叫做Cache Manager用来实现缓存管理。 由于Nginx是使用一个内存响应n个请求的,所以它对内存的消耗非常低,有人做过统计说1w个保持连接keep-alive状态或模式下的connection,Nginx只需要消耗2.5M内存来维护。 所谓热部署指的是如果我们的配置文件更新了不用重启nginx,新配置文件就能够生效了。甚至于nginx的版本更新了,如现在用的是1.19的版本想升级到1.21,1.19的版本不用停机,1.21的慢慢就会切上去了。过后等1.21的切换完成了可以让1.19的再下线。所以他支持热部署,因此这里的热部署指的是不停机而更新配置文件或者是更换日志文件即日志文件的滚动也包括升级程序版本等等都能实现。这就是热部署的功能。 小编使用的操作系统是CentOS 7.6。 nginx安装依赖GCC、openssl-devel、pcre-devel、zlib-devel软件库。 Pcre全称(Perl Compatible Regular Expressions),中文perl兼容正则表达式,pcre官方站点。 1. yum install pcre pcre-devel -y 2. yum install openssl openssl-devel -y nginx官方源码下载地址:https://nginx.org/en/download.html 使用./configure --help查看各模块使用情况,用 --without-http_ssi_module 方式关闭不需的模块。可用 --with-http_perl_modules 方式安装需要的模块。 1. tar -zxvf nginx-1.21.5.tar.gz 2. cd nginx-1.21.5/ 3. ./configure --prefix=/usr/local/nginx-1.21.5 --user=nginx --group=nginx --with-http_ssl_module --with-http_stub_status_module 4. 5. useradd nginx -M -s /sbin/nologin 6. make && make install 7. ln -s /usr/local/nginx-1.21.5 /usr/local/nginx 1. /usr/local/nginx/sbin/nginx -t 2. nginx: the configuration file /usr/local/nginx-1.21.5/conf/nginx.conf syntax is ok 3. nginx: configuration file /usr/local/nginx-1.21.5/conf/nginx.conf test is successful 1. /usr/local/nginx/sbin/nginx -t # 检查配置文件 2. /usr/local/nginx/sbin/nginx # 确定nginx服务 3. netstat -lntup |grep nginx # 检查进程是否正常 4. curl http://localhost # 确认结果 1. nginx -s signal 2. signal: 3. stop — fast shutdown 4. quit — graceful shutdown 5. reload — reloading the configuration file 6. reopen — reopening the log files 7. 用来打开日志文件,这样nginx会把新日志信息写入这个新的文件中 /usr/local/nginx/sbin/nginx -V 查看已经编译的参数。 使用kill命令操作nginx。格式:kill -信号 PID 信号名称 例子 1. kill -QUIT `cat /usr/local/nginx/nginx.pid` 2. kill -HUP `cat /usr/local/nginx/nginx.pid` 配置基础配置文件 1. worker_processes 1; 2. events { 3. worker_connections 1024; 4. } 5. http { 6. include mime.types; 7. default_type application/octet-stream; 8. sendfile on; 9. keepalive_timeout 65; 10. server { 11. listen 80; 12. server_name localhost; 13. location / { 14. root html; 15. index index.html index.htm; 16. } 17. error_page 500 502 503 504 /50x.html; 18. location = /50x.html { 19. root html; 20. } 21. } 22. } 测试配置文件是否正常 1. shell> /usr/local/nginx/sbin/nginx -t 2. nginx: the configuration file /usr/local/nginx-1.21.5/conf/nginx.conf syntax is ok 3. nginx: configuration file /usr/local/nginx-1.21.5/conf/nginx.conf test is successful 4. shell> curl -I http://localhost 5. HTTP/1.1 200 OK 开启 nginx 监控服务 1. # 设定查看 nginx 状态地址 2. location /status { 3. stub_status on; # 表示开启stubStatus的工作状态统计功能。 4. access_log off; # access_log off; 关闭access_log 日志记录功能。 5. #auth_basic "status"; # auth_basic 是nginx的一种认证机制。 6. #auth_basic_user_file conf/htpasswd; # 用来指定密码文件的位置。 7. } 1. yum install -y httpd-tools 2. /usr/local/apache/bin/htpasswd -c /usr/local/nginx/conf/htpasswd biglittleant 3. New password: 完成后会在 /usr/local/nginx/conf/ 目录下生成 htpasswd 文件。 1. curl http://127.0.0.1/status 2. 3. Active connections: 20 4. server accepts handled requests 5. 36 36 38 6. Reading: 0 Writing: 2 Waiting: 0 1. nginx_status_fun(){ 2. NGINX_PORT=$1 3. NGINX_COMMAND=$2 4. nginx_active(){ 5. /usr/bin/curl "http://127.0.0.1:"$NGINX_PORT"/status/" 2>/dev/null| grep 'Active' | awk '{print $NF}' 6. } 7. nginx_reading(){ 8. /usr/bin/curl "http://127.0.0.1:"$NGINX_PORT"/status/" 2>/dev/null| grep 'Reading' | awk '{print $2}' 9. } 10. nginx_writing(){ 11. /usr/bin/curl "http://127.0.0.1:"$NGINX_PORT"/status/" 2>/dev/null| grep 'Writing' | awk '{print $4}' 12. } 13. nginx_waiting(){ 14. /usr/bin/curl "http://127.0.0.1:"$NGINX_PORT"/status/" 2>/dev/null| grep 'Waiting' | awk '{print $6}' 15. } 16. nginx_accepts(){ 17. /usr/bin/curl "http://127.0.0.1:"$NGINX_PORT"/status/" 2>/dev/null| awk NR==3 | awk '{print $1}' 18. } 19. nginx_handled(){ 20. /usr/bin/curl "http://127.0.0.1:"$NGINX_PORT"/status/" 2>/dev/null| awk NR==3 | awk '{print $2}' 21. } 22. nginx_requests(){ 23. /usr/bin/curl "http://127.0.0.1:"$NGINX_PORT"/status/" 2>/dev/null| awk NR==3 | awk '{print $3}' 24. } 25. case $NGINX_COMMAND in 26. active) 27. nginx_active; 28. ;; 29. reading) 30. nginx_reading; 31. ;; 32. writing) 33. nginx_writing; 34. ;; 35. waiting) 36. nginx_waiting; 37. ;; 38. accepts) 39. nginx_accepts; 40. ;; 41. handled) 42. nginx_handled; 43. ;; 44. requests) 45. nginx_requests; 46. esac 47. } nginx的功能多,使用起来需要注意的知识点也多,小编接下来将分几篇文章将nginx的一些使用心得分享出来,一起学习使用nginx,共同进步。 参考资料: Nginx教程(一) Nginx入门教程(https://www.cnblogs.com/crazylqy/p/6891929.html) 死磕nginx系列(https://www.cnblogs.com/biglittleant/p/8979063.html) nginx-官方文档 nginx优化 本文关键词:nginx命令使用什么选项查看软件的版本信息,nginx命令,linux启动nginx命令,nginx命令详解,nginx命令使用什么选项重新加载配置文件。这就是关于《nginx命令,nginx命令学习笔记(Nginx 操作详解)》的所有内容,希望对您能有所帮助!chkconfig nginx>const CompressionWebpackPlugin = require('compression-webpack-plugin')module.exports = { // gzip 配置 configureWebpack: config => { if (process.env.NODE_ENV === 'production') { // 生产环境 return { plugins: [new CompressionWebpackPlugin({ test: /\.js$|\.html$|\.css/, // 匹配文件名 threshold: 1024, // 文件压缩阈值,对超过 1k 的进行压缩 deleteOriginalAssets: false // 是否删除源文件 })] } } }, ...}HTTP 服务器
server { listen 80; server_name localhost; location / { root /usr/local/app; index index.html; }}动静分离
# 所有静态请求都由nginx处理,存放目录为 htmllocation ~ \.(gif|jpg|jpeg|png|bmp|swf|css|js)$ { root /usr/local/resource; expires 10h; # 设置过期时间为10小时}# 所有动态请求都转发给 tomcat 处理location ~ \.(jsp|do)$ { proxy_pass 127.0.0.1:8888;}请求限制
http{ limit_conn_zone $binary_remote_addrzone=limit:10m; // 设置共享内存空间大 server{ location /{ limit_conn addr 5; # 同一用户地址同一时间只允许有5个连接。 } }}limit_conn_zone $binary_remote_addr zone=perip:10m;limit_conn_zone $server_name zone=perserver:10m;server { limit_conn perip 10; # 限制每个 ip 连接到服务器的数量 limit_conn perserver 2000; # 限制连接到服务器的总数}limit_req_zone $binary_remote_addr zone=creq:10 mrate=10r/s;server{ location /{ limit_req zone=creq burst=5; }}正向代理
resolver 8.8.8.8 # 谷歌的域名解析地址server { resolver_timeout 5s; // 设超时时间 location / { # 当客户端请求我的时候,我会把请求转发给它 # $host 要访问的主机名 $request_uri 请求路径 proxy_pass http://$host$request_uri; }}图片防盗链
server { listen 80; server_name *.test; # 图片防盗链 location ~* \.(gif|jpg|jpeg|png|bmp|swf)$ { valid_referers none blocked server_names ~\.google\. ~\.baidu\. *.qq.com; # 只允许本机 IP 外链引用,将百度和谷歌也加入白名单有利于 SEO if ($invalid_referer){ return 403; } }适配 PC 或移动设备
server { listen 80; server_name test.com; location / { root /usr/local/app/pc; # pc 的 html 路径 if ($http_user_agent ~* '(Android|webOS|iPhone|iPod|BlackBerry)') { root /usr/local/app/mobile; # mobile 的 html 路径 } index index.html; }}设置二级域名
server { listen 80; server_name admin.test.com; // 二级域名 location / { root /usr/local/app/admin; # 二级域名的 html 路径 index index.html; }}配置 HTTPS
wget https://dl.eff.org/certbot-autochmod a+x certbot-autosudo ./certbot-auto certonly --standalone --email admin@abc.com -d test.com -d www.test.comserver{ listen 443 ssl http2; // 这里还启用了 http/2.0 ssl_certificate /etc/letsencrypt/live/test.com/fullchain.pem; # 证书文件地址 ssl_certificate_key /etc/letsencrypt/live/test.com/privkey.pem; # 私钥文件地址 server_name test.com www.test.com; // 证书绑定的域名}配置 HTTP 转 HTTPS
server { listen 80; server_name test.com www.test.com; # 单域名重定向 if ($host = 'www.sherlocked93.club'){ return 301 https://www.sherlocked93.club$request_uri; } # 全局非 https 协议时重定向 if ($scheme != 'https') { return 301 https://$server_name$request_uri; } # 或者全部重定向 return 301 https://$server_name$request_uri;}单页面项目 history 路由配置
server { listen 80; server_name fe.sherlocked93.club; location / { root /usr/local/app/dist; # vue 打包后的文件夹 index index.html index.htm; try_files $uri $uri/ /index.html @rewrites; # 默认目录下的 index.html,如果都不存在则重定向 expires -1; # 首页一般没有强制缓存 add_header Cache-Control no-cache; } location @rewrites { // 重定向设置 rewrite ^(.+)$ /index.html break; }}配置高可用集群(双机热备)
yum install keepalived -yglobal_defs{ notification_email { cchroot@gmail.com } notification_email_from test@firewall.loc smtp_server 127.0.0.1 smtp_connect_timeout 30 // 上面都是邮件配置 router_id LVS_DEVEL // 当前服务器名字,用 hostname 命令来查看}vrrp_script chk_maintainace { // 检测机制的脚本名称为chk_maintainace script "[[ -e/etc/keepalived/down ]] && exit 1 || exit 0" // 可以是脚本路径或脚本命令 // script "/etc/keepalived/nginx_check.sh" // 比如这样的脚本路径 interval 2 // 每隔2秒检测一次 weight -20 // 当脚本执行成立,那么把当前服务器优先级改为-20}vrrp_instanceVI_1 { // 每一个vrrp_instance就是定义一个虚拟路由器 state MASTER // 主机为MASTER,备用机为BACKUP interface eth0 // 网卡名字,可以从ifconfig中查找 virtual_router_id 51 // 虚拟路由的id号,一般小于255,主备机id需要一样 priority 100 // 优先级,master的优先级比backup的大 advert_int 1 // 默认心跳间隔 authentication { // 认证机制 auth_type PASS auth_pass 1111 // 密码 } virtual_ipaddress { // 虚拟地址vip 172.16.2.8 }}#!/bin/bashA=`ps -C nginx --no-header | wc -l`if [ $A -eq 0 ];then /usr/sbin/nginx # 尝试重新启动nginx sleep 2 # 睡眠2秒 if [ `ps -C nginx --no-header | wc -l` -eq 0 ];then killall keepalived # 启动失败,将keepalived服务杀死。将vip漂移到其它备份节点 fifi其它功能和技巧
代理缓存
proxy_cache_path usr/local/cache levels=1:2 keys_zone=my_cache:10m;server { listen 80; server_name test.com; location / { proxy_cache my_cache; proxy_pass http://127.0.0.1:8888; proxy_set_header Host $host; }}访问日志
http { 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;}错误日志
#error_log logs/error.log;#error_log logs/error.log notice;#error_log logs/error.log info;静态资源服务器
server { listen 80; server_name static.bin; charset utf-8; # 防止中文文件名乱码 location /download { alias /usr/share/nginx/static; # 静态资源目录 autoindex >server { listen 80; server_name ~^([\w-]+)\.doc\.test\.club$; root /usr/local/html/doc/$1;}泛域名转发
server { listen 80; server_name ~^([\w-]+)\.serv\.test\.club$; location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_set_header X-NginX-Proxy true; proxy_pass http://127.0.0.1:8080/$1$request_uri; }}常见问题
nginx 中怎么设置变量
set $name "chroot";server { listen 80; server_name test.com; location / { set $temp hello; return "$temp world"; }}server { listen 80; server_name test.com; location / { set $temp "hello "; return "${temp}world"; }}$ curl 'http://test.com/' hello worldgeo $dollar { default "$";}server { listen 80; server_name test.com; location / { set $temp "hello "; return "${temp}world: $dollar"; }}附 nginx 内置预定义变量
附 nginx 模块
nginx 模块分类
模块清单
2、nginx命令,nginx命令学习笔记
一、初识nginx
三、nginx 的优点
四、nginx的应用场合
五、 nginx的特性5.1 模块化设计、较好的扩展性
8.4 编写zabbix监控脚本
- 上一篇: 请求的近义词,请求读音及解释
- 下一篇: 五台山佛教网官网,五台山佛教协会发出严正声明
- 最近发表