nginx web服务

目录

一.概述

1.nginx特点

2.nginx作用

二.nginx服务搭建

1.nginx安装

2.目录结构

3.核心配置文件

4.核心命令

5.nginx信号

三.配置案例

1.单站点配置

2.虚拟机主机头配置

四.HTTPS访问配置

1.ssl简介

2.ssl协议介绍

3.传输过程

4.openssl介绍

5.HTTPS工作流程

7.nginx配置ssl

五.loocation配置

1.作用

2.匹配规则

3.匹配优先级

六.rewrite配置

1.语法

2.可写入字段

3.if指令

4.autoindex

5.nginx配置中的常用变量

七.配置nginx状态统计

1.下载vts模块

2.编译nginx


一.概述

1.nginx特点
  • 高并发、高性能;

  • 模块化架构使得它的扩展性非常好

  • 异步非阻塞的事件驱动模型(epoll)这点和 Node.js 相似

  • 相对于其它服务器来说它可以连续几个月甚至更长而不需要重启服务器使得它具有高可靠性;

  • 热部署、平滑升级;

  • 完全开源,生态繁荣。

2.nginx作用
  • http服务器。Nginx可以独立提供http服务。可做网页静态服务器。

  • 虚拟主机。可以实现在一台服务器虚拟出多个虚拟服务器。

  • 反向代理,负载均衡。当网站的访问量达到一定程度后,单台服务器不能满足用户的请求时,需要用多台服务器集群可以使用nginx做反向代理。并且多台服务器可以平均分担负载,不会应为某台服务器负载高宕机而某台服务器闲置的情况。

  • nginx 中也可以配置安全管理、比如可以使用Nginx搭建API接口网关,对每个接口服务进行拦截。

二.nginx服务搭建

1.nginx安装
  • yum安装

  • 编译安装

2.目录结构
  • yum安装

配置文件目录:/etc/nginx/
临时数据文件目录:/var/lib/nginx 
日志文件目录:/var/log/nginx/ 
访问页面根目录:/usr/share/nginx/html/ 
自定义配置文件目录:/etc/nginx/conf.d 
默认配置文件目录:/etc/nginx/default.d 
  • 编译安装

配置文件目录:/usr/local/nginx1.8/conf 
自定义配置文件目录:/usr/local/nginx1.8/conf/conf.d 
默认配置文件目录:/usr/local/nginx1.8/conf/default.d 
访问页面根目录: /usr/local/nginx1.8/html 
日志文件目录:/usr/local/nginx1.8/logs  
命令存放目录:/usr/local/nginx1.8/sbin 

3.核心配置文件
配置文件名称 配置文件作用
fastcgi.conf 此文件包含了FastCGI相关的配置,用于与FastCGI进程通信
fastcgi.conf.default 此文件是fastcgi.conf的备份副本
fastcgi_params 此文件包含了用于FastCGI的参数配置,包括fastcgi的传输协议、请求超时时间等
fastcgi_params.default 此文件是fastcgi_params的备份副本
koi-utf 此文件包含了UTF-8编码与KOI8-R编码之间的字符转换规则,用于处理中文文件名等问题
koi-win 此文件包含了Windows系统的字符转换规则,用于处理Windows系统的文件名问题
mime.types 此文件包含了Nginx支持的MIME类型配置,用于设置相应的Content-Type头
mime.types.default 此文件是mime.types的备份副本
nginx.conf Nginx的主要配置文件,其中包含了所有全局配置和访问控制规则,作为Nginx服务器的入口文件
nginx.conf.default 此文件是nginx.conf的备份副本
scgi_params 此文件包含了用于SCGI协议的参数配置
scgi_params.default 此文件是scgi_params的备份副本
uwsgi_params 此文件包含了用于uWSGI协议的参数配置
uwsgi_params.default 此文件是uwsgi_params的备份副本
win-utf 此文件包含了Windows系统的字符转换规则,用于处理Windows系统的文件名问题
4.核心命令
命令 作用
systemctl enable nginx 开机自动启动
systemctl disable nginx 关闭开机自动启动
systemctl start nginx 启动Nginx
systemctl stop nginx 停止Nginx
systemctl restart nginx 重启Nginx
systemctl reload nginx 重新加载Nginx
systemctl status nginx 查看 Nginx 运行状态
ps -elf | grep [n]ginx 查看Nginx进程,但是不会显示grep本身的进程
kill -9 pid 根据上面查看到的Nginx进程号,杀死Nginx进程,-9 表示强制结束进程
nginx -s reload 向主进程发送信号,重新加载配置文件,热重启
nginx -s reopen 重启 Nginx
nginx -s stop 快速关闭
nginx -s quit 等待工作进程处理完成后关闭
nginx -T 查看当前 Nginx 最终的配置
nginx -t 检查配置是否有问题
nginx -c configfilePath 指定配置文件启动nginx
5.nginx信号
信号名 含义
stop 直接停止
quit 优雅的退出:有人在访问不会结束进程
reopen 分割日志
reload 重新加载配置文件
term 快速停止nginx进程,可能会中断现有连接,与stop信号类似。
usr1 重新打开日志文件,用于日志切割或日志重定向,与reopen信号类似。
usr2 平滑地升级nginx可执行文件。
hup 重新加载配置文件,优雅地应用新配置,与reload信号类似。
winch 当nginx以master/worker工作模式运行时,重新生成worker进程以适应新的配置。
usr3 向worker进程发送自定义信号。

三.配置案例

1.单站点配置
2.虚拟机主机头配置

四.HTTPS访问配置

1.ssl简介
SSL (Secure Sockets Layer)安全套接层。是由Netscape(网景)公司于1990年开发,用于保障Word Wide Web(WWW)通讯的安全。**主要任务是提供私密性,信息完整性和身份认证。**
TLS(Transport Layer Security)安全传输层协议,)用于在两个通信应用程序之间提供保密性和数据完整性。该标准协议是由IETF于1999年颁布,整体来说TLS非常类似SSLv3,只是对SSLv3做了些增加和修改。

2.ssl协议介绍
SSL是一个不依赖于平台和应用程序的协议,位于TCP/IP协议与各种应用层协议之间,为数据通信提高安全支持

3.传输过程
  • 首先发送数字证书,获取到可信的public key。

  • 通过public key发送对称秘钥,接收方用私钥解密

  • 通信双方使用仅仅对方可知的对称秘钥进行加密传输

4.openssl介绍
OpenSSL是一个实现安全套接字层的加密工具包,openssl程序是一个命令行工具,用于使用OpenSSL加密库的加密函数
  • 创建和管理私钥、公钥和参数

  • 公钥密码操作

  • 创建X.509证书、CSR和CRT

  • 消息摘要的计算

  • 密码加密和解密

  • SSL/TLS客户端和服务器测试

  • 处理S/MIME签名或加密邮件

  • 时间戳请求、生成和验证

5.HTTPS工作流程
  • 客户端(浏览器)访问 https://www.baidu.com 百度网站;

  • 百度服务器返回 HTTPS 使用的 CA 证书;

  • 浏览器验证 CA 证书是否为合法证书;

  • 验证通过,证书合法,生成一串随机数并使用公钥(证书中提供的)进行加密;

  • 发送公钥加密后的随机数给百度服务器;

  • 百度服务器拿到密文,通过私钥进行解密,获取到随机数(公钥加密,私钥解密,反之也可以);

  • 百度服务器把要发送给浏览器的内容,使用随机数进行加密后传输给浏览器;(对称加密)

  • 此时浏览器可以使用随机数进行解密,获取到服务器的真实传输内容。

7.nginx配置ssl

五.loocation配置

1.作用

配置路径;写在server字段中

2.匹配规则
  • = 精确匹配;

  • ~ 正则匹配,区分大小写;

  • ~* 正则匹配,不区分大小写;

  • ^~ 匹配到即停止搜索;

3.匹配优先级

( = ) > (^~) > (~) > (~*) > (不带任何字符 “/”)。

六.rewrite配置

1.语法
rewirte /images/(.*\.jpg)$ /pic/$1; # $1是前面括号(.*\.jpg)的反向引用

2.可写入字段

server、location、if

3.if指令
4.autoindex
5.nginx配置中的常用变量
变量名 含义
remote_add 客户端IP地址
remote_port 客户端端口
server_addr 服务端IP地址
Server_port 服务端端口
server_protocol 服务端协议
binary_remote_addr 二进制格式的客户端IP地址
connection TCP连接的序号,递增
connection_request TCP连接当前的请求数量
uri 请求的URL,不包含参数
request ur 请求的URL,包含参数
scheme 协议名,http或https
request metho 请求方法
request_length 全部请求的长度,包含请求行、请求头、请求体
args 全部参数字符串
arg_参数名 获取特定参数值
is_args URL中是否有参数,有的话返回?,否则返回空
query_string 与args相同
host 请求信息中的Host,如果请求中没有Host行,则在请求头中找,最后 使用nginx中设置的server_name。
http_user_agent 用户访问方式
http_referer 从哪些链接过来的请求
http_via 每经过一层代理服务器,都会添加相应的信息
http_cookie 获取用户cookie
request time 处理请求已消耗的时间
https 是否开启了https,是则返回on,否则返回空
request_filename 磁盘文件系统待访问文件的完整路径
document_root 由URI和root/alias规则生成的文件夹路径
limit_rate 返回响应时的速度上限值

七.配置nginx状态统计

1.下载vts模块
https://github.com/vozlt/nginx-module-vts

2.编译nginx
tar xf nginx-module-vts-master.zip
cd nginx-1.22.1/
./configure --prefix=/usr/local/nginx/ --add-module=/root/nginx-module-vts-master && make && make install

你可能感兴趣的:(nginx,前端,运维)