为什么需要nginx

nginx启动一个web服务器,用来jenkins构建完成之后自动部署,为自动化部署提供基础服务。jenkins本身作为容器不具备环境功能,只做任务分配。
tomcat是应用进程服务器,tomcat 实际上运行JSP 页面和Servlet,Tomcat和IIS等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。

nginx本身是一个http server
image.png
反向代理
负载均衡
动静分离

正向代理: 依赖代理服务器进行网络访问,浏览器配置代理服务器
正向代理,代理的对象是客户端,反向代理代理的对象是服务端
正向代理可以隐藏真实的客户端,反向代理可以隐藏真实服务端
vpn是正向代理,nginx是反向代理

阿里云服务器安装

pcre
openssl
zlib
nginx

pcre-config —version
tar -xvf nginx.tar 解压
mv nginx.1.xxx nginx 重命名
cd nginx
如果需要SSL模块 ,执行命令不一样
./config 或 执行 ./configure —prefix=/usr/local/nginx
make && make install 编译并安装

/usr/local/nginx/sbin
./nginx 启动
ps -ef | grep nginx 查看nginx进程

/usr/local/nginx/conf

防火墙配置

firewall-cmd位于firewalld包中,systemctl位于systemd包中
yum install firewalld systemd -y

systemctl status firewalld 查看firewalld状态
image.png
systemctl start firewalld 开启防火墙
image.png
firewall-cmd —list-all 查看防火墙开放端口号
image.png
firewall-cmd —add-port=8001/tcp —permanent
firewall-cmd —reload

防火墙端口开放之后,同时也要在云服务实例上配置安全组的规则


查看nginx版本号
/usr/local/nginx/sbin
./nginx -v
image.png

启动nginx

./nginx

关闭nginx
./nginx -s stop

重新加载nginx
./nginx -s reload

问题处理

服务器重启后,重启nginx时报错nginx: [error] open() “/usr/local/nginx/logs/nginx.pid” failed (2: No such file or directory),进入到logs目录发现确实没有nginx.pid文件
使用指定nginx.conf文件的方式重启nginx

  1. /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

此时去logs目录下查看发现nginx.pid文件已经生成了

报错:
nginx: [alert] could not open error log file: open() “/usr/local/nginx/logs/error.log” failed (2: No such file or directory)
2021/08/27 17:52:43 [emerg] 31468#0: open() “/usr/local/nginx/logs/access.log” failed (2: No such file or directory)

mkdir logs
/usr/local/nginx/sbin/nginx -t

查看进程
netstat -ltunp
kill PID
image.png

nginx.conf配置

进入目录 /usr/local/nginx/conf

worker_processes 1; 并发数
events {
worker_connections 1024; // 连接数
}

http 块
http全局块
server块
server全局块
image.png

root、alias用法

  1. location /i/ {
  2. alias /spool/w3/images/;
  3. }
  4. "/i/top.gif" -> "/spool/w3/images/top.gif"
  5. location /i/ {
  6. root /spool/w3;
  7. }
  8. "/i/top.gif" -> "/spool/w3/i/top.gif"

配置环境变量

查看环境变量
echo $PATH
image.png
whereis nginx
查看nginx安装位置

vim ~/.bash_profile

export PATH=$PATH:/usr/local/nginx/sbin
image.png
引用.bash_profile文件 - 生效
source ~/.bash_profile

nginx -v

nginx conf支持配置多个http服务,复制server块,配置不同的端口号,指定不同的location.root路径,以访问不同的服务

Tengine, 淘宝基于nginx开发的稳定的
OpenResty

mac本地安装nginx 方向代理

brew install nginx
nginx version: nginx/1.19.5
启动nginx服务
brew services start nginx
image.png
8080端口
image.png

  1. nginx #启动nginx
  2. nginx -s quit #快速停止nginx
  3. nginx -V #查看版本,以及配置文件地址
  4. nginx -v #查看版本
  5. nginx -s reload|reopen|stop|quit #重新加载配置|重启|快速停止|安全关闭nginx
  6. nginx -h #帮助

5.1 nginx安装文件目录
/usr/local/Cellar/nginx
5.2 nginx配置文件目录
/usr/local/etc/nginx
5.3 config文件目录
/usr/local/etc/nginx/nginx.conf

卸载

  1. brew uninstall nginx

image.png
localhost:8000/bing/ -> https://cn.bing.com/

win nginx

https://www.cnblogs.com/maoyi/p/13605151.html
开启nginx:start nginx
重启nginx: nginx -s reload
停止:nginx -s stop

ctrl+shift+esc
查看进程是否被杀掉,或影响配置生效

server {
listen 端口号;
location ^~/项目名 {
root “盘:\项目名所在位置”;
index index.html;
}
}

可以配置多个server,不同端口

错误处理

The request was rejected because the URL was not normalized.
路径配置错误问题

  1. server {
  2. listen 8091;
  3. server_name 0.0.0.0;
  4. location / {
  5. root D:\workspace\pgk-client\dist;
  6. index index.html;
  7. try_files $uri $uri/ /index.heml;
  8. }
  9. location /api/pgk-abc/ {
  10. proxy_pass http://10.102.201.171:8899/;
  11. }
  12. }


Tengine

Tengine