cd 目录 : 转换目录
ls : 查看当前目录下的文件(不包括隐藏文件)
ll : 查看当前目录下的所有文件(包括隐藏文件)
nginx -V : 查看各种文件的目录
nginx -t : 检查配置文件是否存在问题
sudo systemctl restart nginx : 重新启动nginx
sudo systemctl status nginx : 查看nginx状态
nginx -s reload : 重新加载配置文件
nginx -s reopen : 重新打开配置文件
nginx -s quit : 优雅停止
nginx -s stop : 立即停止
pass掉进程??:kill -9 端口号
ps aux | grep nginx : 查看进程
service nginx stop : 停止nginx
curl localhost : 看是否能连接到80端口
sudo apt update
sudo apt install nginx
brew install nginx
scoop install nginx
choco install nginx
上面是包管理方式,也可以源码编译安装,比较灵活,但麻烦(可能会出现各种编译错误)
也可以用docter安装
docker pull nginx
1、master进程负责管理worker进程
2、worker进程负责处理请求
3、pid即进程id,通过【ps aux | grep nginx】命令查看进程id
4、端口,通过【lsof】命令查看端口占用情况 ?【lsof -s:80】表示只查看80端口
5、服务启动之后通过【nginx -s signal】命令来停止或重启服务 siginal具体内容如下
【signal----------quit】:优雅停止
【signal----------stop】:立即停止
【signal----------reload】:重新加载配置文件
【signal----------reopen】:重新打开配置文件
1、访问localhost:80显示的默认页面是由nginx.conf配置文件server中location中配置的
/ 的意思 ?输入localhost时(即找根目录) 会自动匹配到这个location下的内容,然后去找这个目录中html文件夹中的index.html
root是一个相对路径,是相对与nginx安装目录来说的
2、【nginx -V】 (这个是大写的v)命令可以查看安装目录、编译参数、配置文件、日志文件等各种信息
3、用nginx -t来快速查看配置文件是否正确,不正确的话会显示错误信息
4、配置文件修改后需要在nginx目录下用【nginx -s reload】命令重新加载配置文件
(1)全局块
全局配置(主配置),定义nginx
(2)events块
服务器和客户端之间的网络配置、网络io模型等
如:worker_connections 768; ??????每个进程可以同时接收多少(这里是786个)个网络连接
(3)http块
(1)添加【upstream backend{}】配置用于反向代理(与server同级)
backend仅仅是一个名字,可以随便取
(2)里面的内容是需要被代理的服务器的配置
(3)然后在server模块中添加一个location配置
如下面的配置,把以app开头的请求都被带路到上面的配置之中
注意proxy_pass后面的地址要和刚刚起的名字要相同(里面的backend,绿色标注)
(4)上面的三个服务默认论循处理请求,但也可以通过权重来调整负载均衡的策略weight权重越大被分配到的请求越多,下来图片中表示第一个服务是后面两个的三倍
(5)也可以根据客户的ip地址来进行哈希,同一个客户端的请求就会被分配到同一个服务器上
(1)http协议的默认端口为80
(2)而https协议的默认端口为443,https协议需要用到SSL证书,在主流云平台可以免费申请,申请后可以拿到密钥文件和证书文件
(3)也可以自己生成自签名证书
生成私钥文件(private key)
????????openssl genrsa -out private.key 2048
根据私钥生成证书签名请求文件(Certificate Signing Request,简称CSR文件)
????????openssl reg -new -key private.key -out cert.csr
使用私钥对证书申请进行签名从而生成证书文件(pem文件)
????????openssl x509 -req -in cert.csr -out cacert.pem -signkey private.key
(4)生成两个文件
这两个文件需要放到服务器上,并且在Nginx的配置文件中进行配置
监听修改后,server_name一般填写自己的域名
(5)然后下面这第一红框是刚刚生成的两个文件放置的路径,第二红框是一些协议,一般固定
(6)一般都会配置一个重定向,将http请求转给https,把http的server里面加入下面红色框框内容就ok了
使用nginx可以在一个服务器上部署多个站点,每一个server块就是一个虚拟主机,通过server_name来指定这个虚拟主机的域名,当访问这个域名时候就会相应的server块所匹配到,然后执行server块里面的配置