下载地址:http://nginx.org/
安装
环境要求
gcc
安装nginx需要先将官网下载的源码进行编译,编译依赖gcc环境,如果没有gcc环境,需要安装
yum install gcc-c++
pcre
pcre(Perl Compatible Regular Expressions)是一个Perl库,包括 perl 兼容的正则表达式库。nginx的http模块使用pcre来解析正则表达式,所以需要在linux上安装pcre库。
注:pcre-devel是使用pcre开发的一个二次开发库。nginx也需要此库。
yum install -y pcre pcre-devel
zlib
zlib库提供了很多种压缩和解压缩的方式,nginx使用zlib对http包的内容进行gzip,所以需要在linux上安装zlib库。
yum install -y zlib zlib-devel
openssl
OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。
nginx不仅支持http协议,还支持https(即在ssl协议上传输http),所以需要在linux安装openssl库。
yum install -y openssl openssl-devel
————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
第一种:编译及安装
解压源码包:
tar -zxvf /home/tools/nginx-1.20.2.tar.gz -C /home/ap
进入/nginx-1.20.2目录,使用configure命令创建makefile,命令参数设置如下:
./configure \
--prefix=/usr/local/nginx \
--pid-path=/var/run/nginx/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_gzip_static_module \
--http-client-body-temp-path=/var/temp/nginx/client \
--http-proxy-temp-path=/var/temp/nginx/proxy \
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
--http-scgi-temp-path=/var/temp/nginx/scgi
注意:上边将临时文件目录指定为/var/temp/nginx,需要在/var下创建temp及nginx目录
然后:
make
make install
nginx路径:/usr/local/nginx
第二种:yum安装
# 安装 nginx
sudo yum -y install nginx
# 卸载 nginx
sudo yum remove nginx
通过这种方式安装后nginx的配置路径为:/etc/nginx
Nginx的启动及关闭
启动
在/usr/local/nginx目录下有一个sbin目录,sbin目录下有一个nginx可执行程序。
./nginx
关闭nginx
关闭命令:相当于找到nginx进程kill。
./nginx -s stop
退出命令:
等程序执行完毕后关闭,建议使用此命令。
./nginx -s quit
补充:动态加载(刷新)配置文件
#可以不关闭nginx的情况下更新配置文件
./nginx -s reload
问题解决:
sbin目录下启动时发现错误:nginx: [emerg] open() “/var/run/nginx/nginx.pid” failed (2: No such file or directory)
原因:缺少nginx.pid文件,nginx无法启动。nginx重启之后,会寻找上一次的日志文件nginx.pid,重启时,nginx会将本次的操作都会记录到其中,再次重启,检查该文件确定上次启动时是否存在问题,方便进行恢复,没有重启就不会记录该文件,重启后重新找该文件,由于路径没有修改,会找不到。
解决:
1.更改日志文件的路径:
vi /usr/local/nginx/conf/nginx.conf
pid /usr/local/nginx/logs/nginx.pid;
2.创建logs目录:
mkdir /usr/local/nginx/logs
+++++++++++++++++++++++++++
nginx配置文件
组成部分:
1.全局块
从配置文件开始到events块之间的内容,主要设置一些影响nginx服务器整体运行的配置指令
例如:worker_processes 1;worker_processes值越大可以支持并发处理量也越多。
2.events块
影响nginx服务器与用户的网络连接
例如:worker_connections 1024;表示每个worker_processes支持的最大连接数是1024;
3.http块
包括http全局块和server块;
http全局块配置的指令包含文件引入、mime-type定义、日志自定义、连接超时时间、单链连接请求上限等;
server块和虚拟主机有密切关系;
每个http块可以有多个server块,每个server块相当于一个虚拟主机;
每个server块分为全局server块,及可能多个location块
全局server块:配置本虚拟机主机的监听配置和本虚拟机主机的名字或ip配置;
location块:基于nginx服务器收到的请求字符串(例如server_name/uri-string),对虚拟主机名称(ip别称)之外的字符串进行匹配,对特定的请求进行处理。地址定向,数据缓存和应答控制等功能,海鸥许多第三方模块的配置也在这里。
nginx服务器配置最频繁的部分,代理、缓存和日志定义等众多功能和第三方模块的配置都在这里,比如说反向代理、负载均衡、动静分离、高可用都是在这儿配置;
================================================================
(我把防火墙关了)
对外开放访问的端口:
firewall-cmd --add-port=8080/tcp --permanent
firewall-cmd -reload
查看已经开放的端口号:
firewall-cmd --list-all
========================================
反向代理:
1.本地配置:
2.nginx的nginx.conf文件添加红框配置
3.启动nginx和tomcat,在浏览器输入http://www.123.com/
====================================================
负载均衡:
1.轮询(默认)
2.权重
3.ip_hash
====================================================
++++++++++++++++++++++++++++++++++++++++++++++++++++
动静分离:
========================================================
++++++++++++++++++++++++++++++++++++++++++++++++++++++++
高可用: