Nginx是一款高性能的代理、转发服务器,目前已经支持4层和7层代理。
OpenResty则是基于Nginx增加Lua的功能,可以方便的实现缓存功能。
安装形式 | 安装难度 | 优点 | 缺点 | 推荐排名 | 官网 |
---|---|---|---|---|---|
OpenResty | Centos一键安装 | 自带Https、Lua扩展 | 不带开机启动 | 1 | OpenResty Download Centos |
OpenResty | Windows一键安装 | 开机重启有难度 | 不带开机启动 | 2 | OpenResty Windows |
Nginx | Centos yum一键安装 | 简单,自带https,开机启动 | 定制麻烦 | 3 | nginx: download Stable |
Nginx | Centos 手工编译 | 麻烦,慢;编译时候可以自己把模块如:https编译进去 | 定制方便 | 4 | |
Nginx | Centos 手工编译(简化版本) | 简单,慢;编译时候可以自己把模块如:https编译进去 | 定制方便 | 5 | |
Nginx | Windows版本 | 简单,直接解压;开机自动动麻烦 | 6 |
我们安装nginx、tomcat等,建议使用自己账号创建,不推荐使用root用户;
尤其是tomcat
useradd tomcat
chown -R tomcat:tomcat /usr/local/tomcat9 #把已有的目录变成tomcat的权限
直接查看官网最新的安装命令。http://openresty.org/cn/linux-packages.html
搜索Centos
你可以在你的 CentOS 系统中添加 openresty
仓库,这样就可以便于未来安装或更新我们的软件包
(通过 yum check-update
命令)。
运行下面的命令就可以添加我们的仓库(对于 CentOS 8 或以上版本,应将下面的 yum
都替换成 dnf
):
# add the yum repo:
wget https://openresty.org/package/centos/openresty.repo
sudo mv openresty.repo /etc/yum.repos.d/
# update the yum index:
sudo yum check-update
然后就可以像下面这样安装软件包,比如 openresty
:
sudo yum install -y openresty
如果你想安装命令行工具 resty
,那么可以像下面这样安装 openresty-resty
包:
sudo yum install -y openresty-resty
命令行工具 opm
在 openresty-opm
包里,而 restydoc
工具在 openresty-doc
包里头。
列出所有 openresty
仓库里头的软件包:
sudo yum --disablerepo="*" --enablerepo="openresty" list available
命令1编辑启动文件 vim /etc/rc.d/rc.local
,敲入下面脚本
#编辑开机启动文件,加入对应的命令
nohup bash /usr/local/tomcat9/bin/startup.sh &>/dev//null & #tomcat开机启动
nohup ntpdate stdtime.gov.hk #开机自动校准时间,首先自己要在命令行执行一次,试一下。看是否OK
/usr/local/redis-5.0.8/src/redis-server /usr/local/redis-5.0.8/redis.conf #redis 开机
/usr/local/openresty/nginx/sbin/nginx &>/dev//null & #启动openresty
必须记得给rc.local权限chmod +x /etc/rc.d/rc.local
查看rc-local:
systemctl status rc-local
、
systemctl restart rc-local
openresty -t #valid
openresty -s reload #reload
下载直接解压就可以使用,也不需要安装其他插件。
主要点:默认不带开机启动,需要自己进行配置开机启动。
参考,亲测可以-推荐 使用windows 任务计划 ui界面操作:Nginx服务器 & windows 设置自动(开机 or 定时)启动
参考,亲测可以执行-有点麻烦:window 怎么样让nginx开机自启动
参考:CentOS7中使用yum安装Nginx的方法,直接一键安装nginx.
安装完毕,通过 where nginx
或者 find -name nginx
查看配置conf文件目录、日志目录等
参考:Centos7安装Nginx实战
参考2: CentOS7安装Nginx及配置
到Nginx官网下载最新的nginx包,zip 或者 tar.gz 都可以.
wget --no-check-certificate https://nginx.org/download/nginx-1.23.1.tar.gz
#https://nginx.org/download/nginx-1.20.2.tar.gz
#wget https://nginx.org/download/nginx-1.18.0.tar.gz
#wget https://nginx.org/download/nginx-1.16.1.tar.gz
#wget https://nginx.org/download/nginx-1.14.2.tar.gz
## 下载要使用:https,不要使用 http
#老版本,之前自己用的最多的,目前不用了;
#目前升级使用用1.16 (环普东r 项目使用);
#最新升级使用1.18 (yulin B环境) 有漏洞
#最新升级使用1.20 (baoj)
#最新升级使用1.22 (jiankang xi an)
然后解压,tar -xvzf nginx-1.23.1.tar.gz
或者 `unzip nginx-1.23.1.zip
前置安装1:C++
ububtu平台编译环境可以使用以下指令
apt-get install build-essential
apt-get install libtool
centos平台编译环境使用如下指令
安装make: yum -y install gcc automake autoconf libtool make
安装g++: yum install gcc gcc-c++
$ cd /usr/local/
$ wget --no-check-certificate http://jaist.dl.sourceforge.net/project/pcre/pcre/8.33/pcre-8.33.tar.gz
$ tar -zxvf pcre-8.33.tar.gz
$ cd pcre-8.33
$ ./configure
$ make && make install
#如报错:configure: error: You need a C++ compiler for C++ support
#解决:yum install -y gcc gcc-c++
$ cd /usr/local/
$ #wget https://www.openssl.org/source/openssl-1.1.1c.tar.gz --no-check-certificate ### 不验证证书, nginx1.18和之前用的这个版本。
$ wget https://www.openssl.org/source/openssl-1.1.1k.tar.gz --no-check-certificate ### 不验证证书, nginx.1.20 需要最新的这个班;
$ tar -zxvf openssl-1.1.1k.tar.gz
$ cd openssl-1.1.1k
$ ./config 【这个一步完成一定看一下是否有报错】
$ make && make install 【这一步很慢的,慢慢等】
#按照完成我们查看一下版本:openssl version ,如果报错,我们继续下面
#检测命令是否有软连接:dd $(which /usr/local/nginx/sbin/nginx)
#我们创建软连接:
ln -s /usr/local/lib64/libssl.so.1.1 /usr/lib64/libssl.so.1.1
ln -s /usr/local/lib64/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1
ln -s /lib64/libpcre.so.0.0.1 /lib64/libpcre.so.1
#执行完,我们再次查看版本
openssl version ## OpenSSL 1.1.1k 25 Mar 2021
#安装zlib库存
$ cd /usr/local/
$ wget https://zlib.net/zlib-1.2.11.tar.gz
$ tar -zxvf zlib-1.2.11.tar.gz
$ ./configure
$ make && make install
cd /usr/local/nginx/nginx-1.20.2/
进入目录
–prefix: 是编译后nginx放置的根目录,自己选择
./configure \
--user=nobody \
--group=nobody \
--prefix=/usr/local/nginx/ \
--with-http_stub_status_module \
--with-http_gzip_static_module \
--with-http_realip_module \
--with-http_sub_module \
--with-openssl=/usr/local/openssl-1.1.1k \
--with-http_ssl_module \
--with-stream \
--with-mail \
--with-mail_ssl_module
###这里编译环境总是找不到openssl,这里手工指定一下位置
### 后面的参数都是, 可以删除 或者 添加的
(--with-http-ssl-module 这个不加后面在nginx.conf配置ssl:on后,启动会报,是为了支持https,
不添加报错:nginx: [emerg] unknown directive "ssl" in /opt/nginx/conf/nginx.conf 异常 )
(--with-stream是为了支持4层基于端口的代理; 平时用都是7层的。可选)
(--with-mail #该选项用于启用mail模块,该模块默认没有被激活。可选)
(--with-mail_ssl_module \ #为了代理任何一种类型的使用SSL/TLS的mail,激活该模块。可选)
【这里是指定编译的时候把相关的模块安装到nginx里面。】
编译参数说明: Nginx:编译安装/动态添加模块 https://www.cnblogs.com/Dy1an/p/11227796.html
【编译这一步必须不能报错,如果报错,检查完成】
make & make install
【这步完成会从新生成一个目录/usr/local/nginx】 make挺慢的,一般make命令最后会卡顿,提示:#这里经常出现这样的提示 make[1]: 离开目录“/usr/local/nginx/nginx-1.20/nginx-1.20.2” #不用理睬 就可以
make install 最后我们再次执行一下这个命令,就OK了
--------------------------------
--------------------------------
安装完成, 会重新产生一个目录 /usr/local/nginx,并生成 sbin、conf等目录。
里面就是 nginx可执行文件; 以前的 /usr/local/nginx-1.16.1可以删除了
手工安装就是麻烦,还得自己设置开机启动配置。
开机启动脚本方式1: centos7.x设置nginx开机自启动
开启启动脚本方式2: CentOS下设置nginx开机自动启动和chkconfig管理
开启启动脚本方式3:同openResty开机自动,rc.local
写入启动命令
原来 systemctl status nginx.service
和 service nginx.service status
这两种命令是等价的
在这三种都已经使用过
liang哥提供
yum -y install make gcc gcc-c++ zlib zlib-devel pcre pcre-devel openssl openssl-devel
/usr/local/nginx/
wget --no-check-certificate https://nginx.org/download/nginx-1.22.0.tar.gz
#wget --no-check-certificate https://nginx.org/download/nginx-1.20.2.tar.gz
#wget https://nginx.org/download/nginx-1.18.0.tar.gz
#wget https://nginx.org/download/nginx-1.16.1.tar.gz
#wget https://nginx.org/download/nginx-1.14.2.tar.gz
## 下载要使用:https,不要使用 http
#老版本,之前自己用的最多的,目前不用了;
#目前升级使用用1.16 (环普东r 项目使用);
#最新升级使用1.18 (yulin B环境)
#最新升级使用1.20 (baoj)
然后解压,tar -xvzf nginx-1.22.0.tar.gz
或者 unzip nginx-1.22.0.tar.gz
# 默认安装在:/usr/local/nginx
./configure --with-http_ssl_module --with-http_stub_status_module
make && make install
参考:nginx完全卸载删除
#linux常用命令
#1: 启动
./nginx #适合手工安装;如果不指定-c,nginx在启动时默认加载conf/nginx.conf文件,此文件的地址也可以在编译安装nginx时指定./configure的参数(--conf-path= 指向配置文件(nginx.conf))
#或者
./nginx -c /usr/local/nginx/conf/nginx.conf #适合yum安装
#2: 验证配置文件是否正确
nginx -t
#3: 重置加载配置文件
nginx -s load
#4: 查看是否启动成功
ps -ef | grep nginx #有master和worker两个进程证明启动成功
#5: 查看nginx 版本 和 安装的模块
nginx -v #只查看版本
nginx -V #查看版本,和编辑的模块有哪些
kill -9 processId
cd /usr/local/nginx/sbin && ./nginx -s stop
此方式相当于先查出nginx进程id再使用kill命令强制杀掉进程cd /usr/local/nginx/sbin && ./nginx -s quit
此方式停止步骤是待nginx进程处理任务完毕进行停止,更简单:pkill -9 nginx
1: windows 杀进程
windows杀nginx进程:taskkill /fi "imagename eq nginx.EXE" /f
windowsnginx启动:nginx.exe
windows重新加载配置:nginx.exe -s reload
windows验证配置:nginx.exe -t
2:如何查看日誌
windows: Get-Content -wait "D:\server\tomcat8.5.8081\logs\hiber\hiber_business.log"
linux: tail -f xx.log
Nginx负载均衡权重,ip_hash、
nginx已经安装好了,在安装新的插件 nginx负载均衡fair模块安装和配置
nginx简介:nginx主要做7层的应用层的反向代理,一般基于url 进行代理。
4层的反向代理,比如LVS或者haproxy, 当然最新版的nginx也慢慢支持4层基于端口的映射了。
nginx反向代理:平时我们用nginx都是反向代理,反向代理是代理的server端,比如server有多台局域 网 的服务器。
nginx正向代理:正向代理代理的是client端,
eg1 服务器在内网,需要内网要通过163邮箱服务器进行发 送邮箱;eg2: 科学的上网
参考:Tomcat 或者 Nginx 配置 Https ~ 域名 ssl证书
参考:nginx 4层代理配置
配置文件1: [QCURE.nginx.conf ]github、gitee)
配置文件2:[Bgyiot nginx.config ]github、gitee
针对已经安装的nginx,增加:lua插件
参考:nginx 中添加 lua 模块,支持lua脚本以及遇到的坑
nginx | openresty-luajit2 | ngx_devel_kit | lua-nginx-module | |
---|---|---|---|---|
nginx 1.22 | openresty/luajit2 | v0.3.1 | openresty/lua-nginx-module |
#1、下载luajit2
# Github: https://github.com/openresty/luajit2/archive/refs/tags/v2.1-20220915.tar.gz
# 官网太慢,这里使用:代理地址,根据情况后期换成其他代理地址
cd /usr/local && wget https://download.yzuu.cf/openresty/luajit2/archive/refs/tags/v2.1-20220915.tar.gz -O luajit2-v2.1-20220915.tar.gz
# 2、解压文件,进入文件夹
tar xzvf luajit2*.tar.gz && cd luajit2*
# 3、安装文件 (大概60s),文件按照到了 /usr/local/luajit 目录
make install PREFIX=/usr/local/luajit
#4、添加环境变量!
export LUAJIT_LIB=/usr/local/luajit/lib
export LUAJIT_INC=/usr/local/luajit/include/luajit-2.1
# 需要添加ln,link链接
# 否则在 ./nginx -t的时候报错:error while loading shared libraries: libluajit-5.1.so.2: cannot open shared object file: No such file or directory
## 主要:ln 源文件 目标文链接,源文件必须文件,不能是链接地址
cd /usr/local/luajit/lib/ && ls -l && ln /usr/local/luajit/lib/libluajit-5.1.so.2.1.0 /lib64/libluajit-5.1.so.2
# 1、下载文件
# 原始地址:https://github.com/simpl/ngx_devel_kit/archive/v0.3.1.tar.gz
# 原始github,太慢可通过代理地址下载
cd /usr/local/ && wget https://download.yzuu.cf/simpl/ngx_devel_kit/archive/v0.3.1.tar.gz -O ngx_devel_kit-v0.3.1.tar.gz
# 2、解压文件,进入文件夹
tar -xzvf ngx_devel_kit-*.tar.gz && cd ngx_devel_kit-*
!!!切记,切记,这里暂时不要升级新的版本,会有问题。
# 1、下载解压文件
# 原始Github地址:https://github.com/openresty/lua-nginx-module/archive/refs/tags/v0.10.22.tar.gz
# 原始地址太慢,这里使用代理地址
cd /usr/local/ && wget https://download.yzuu.cf/openresty/lua-nginx-module/archive/refs/tags/v0.10.9rc7.tar.gz -O lua-nginx-module-v0.10.9rc7.tar.gz
# 2、解压文件
tar -xzvf lua-nginx-module-*.tar.gz
yum install lua-devel -y
#1、对已经安装的nginx,对配置conf文件夹、conf文件夹进行备份
cd /usr/local/nginx/ && cp -rf conf/ conf_bak/ && cp -rf conf/ conf_bak/
#2、进入之前的nginx源文件解压目录
cd /usr/local && wget https://nginx.org/download/nginx-1.22.0.tar.gz && tar -zxvf nginx-1.22.0.tar.gz && cd /usr/local/nginx-1.22.0
#3、进行源码文件目录进行 configure,之前的安装的插件一定要包含在配置列表中
## 执行完毕,仔细查看有没有报错,有报错必须解决,否则无法进行下一步,如:缺少xxx包
## 执行完毕,会有一个插件汇总Summery
./configure \
--prefix=/usr/local/nginx/ \
--with-http_stub_status_module \
--with-http_gzip_static_module \
--with-http_realip_module \
--with-http_sub_module \
--with-http_ssl_module \
--with-stream \
--with-pcre \
--add-module=/usr/local/lua-nginx-module-0.10.9rc7 \
--add-module=/usr/local/ngx_devel_kit-0.3.1
#4、进行make
make
#5. 进行make install
# 执行成功,发现多了:/usr/local/nginx/sbin/nginx.old,其他文件并没有丢失
# 并且发现安装了,新版本,老版本照样运行;
make install
###在server模块里面,随便找个地方添加下面的代码,并保存
location /lua {
default_type 'text/plain';
content_by_lua 'ngx.say("hello, lua")';
}
# 必须杀掉nginx进程(这里是在:已有nginx上面升级,必须要先杀掉nginx进程)
cd /usr/local/nginx/sbin && ps -ef | grep nginx && echo 'stop nginx (请观察前后进程变化) ....' && ./nginx -s stop && ps -ef | grep nginx
## 杀死nginx进程,重新启动
cd /usr/local/nginx/sbin/ && ./nginx -c /usr/local/nginx/conf/nginx.conf
# 重新加载配置文件
cd /usr/local/nginx/sbin/ && ./nginx -t && ./nginx -s reload
# 测试lua脚本,正常会打印:hello,lua
curl http://localhost:80/lua/