项目初衷

 OpenResty个人理解可以算是Nginx的平替型,非常适合本人这种基本不怎么会运维的小白,OpenResty自身融合和Nginx的同时,还将lua模块适配了进去,这对于以后lua-waf的搭建提供了很好的环境基础。

OpenResty渗透使用计划:

  • Lua Waf 搭建
  • Nginx、Kafka、扫描器的全自动化

本文完成度:

  • OpenResty 搭建
  • OpenResty 运行测试
  • Nginx 可用性测试
  • Lua 模块可用性测试
  • 端口冲突问题解决

OpenResty搭建

 官网给出了很详细的OpenResty的搭建步骤,只需要按照如下顺序执行即可

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
// 安装导入 GPG 公钥时所需的几个依赖包
sudo apt-get -y install --no-install-recommends wget gnupg ca-certificates

// 导入我们的 GPG 密钥
wget -O - https://openresty.org/package/pubkey.gpg | sudo apt-key add -

// 添加我们官方 APT 仓库
对于 `x86_64` 或 `amd64` 系统,可以使用下面的命令:

echo "deb http://openresty.org/package/ubuntu $(lsb_release -sc) main" \
| sudo tee /etc/apt/sources.list.d/openresty.list

而对于 `arm64` 或 `aarch64` 系统,则可以使用下面的命令:
echo "deb http://openresty.org/package/arm64/ubuntu $(lsb_release -sc) main" \
| sudo tee /etc/apt/sources.list.d/openresty.list

// 更新 APT 索引
apt-get update

// 然后就可以像下面这样安装软件包,比如 `openresty`
sudo apt-get -y install openresty

这个包同时也推荐安装 `openresty-opm` 和 `openresty-restydoc` 包,所以后面两个包会缺省安装上。 如果你不想自动关联安装,可以用下面方法关闭自动关联安装:
sudo apt-get -y install --no-install-recommends openresty

 OpenResty默认安装路劲在/usr/local/openresty,验证是否安装,只需要进入到该目录下,在进入Nginx目录即可

/usr/local/openresty/nginx/sbin

 但是启动Nginx时,需要注意一个问题:端口冲突

 端口问题解决,只需要正常访问修改后的端口,出现提示则代表安装成功

Lua模块使用

 搭建OpenResty的初衷就是为了更方便的使用Lua模块,所以此处编写简单的Lua脚本用于测试其可用性

问题解决

端口冲突

 由于先前已经搭建了GitLab,而GitLab自身具备Nginx,所以已经占用了80端口,如果OpenResty启动Nginx服务器,会提示端口端口已经被占用

Plan One

 按照原有计划,准备将GitLab的Nginx和OpenResty合并,通过OpenResty来转发GitLab的域名,实现共用Nginx的方案,但是执行如下命令后,发现事情并没有想象中那么简单

1
2
3
4
5
6
7
8
9
10
// gitlab.rb配置文件中
// 关闭GitLab原有的Nginx
nginx['enable'] = true

修改为
nginx['enable'] = false

// 允许gitlab-workhorse监听TCP(默认端口8181)
gitlab_workhorse['listen_network'] = "tcp"
gitlab_workhorse['listen_addr'] = "127.0.0.1:8181"

运行gitlab-ctl reconfigure 使更改生效

然后配置OpenResty的Nginx配置文件:/usr/local/openresty/nginx/conf/nginx.conf

新增如下配置

1
2
3
4
5
6
7
8
9
10
server {
listen 80;
server_name gitlab.edevops.top;

location / {
root html;
index index.html index.htm;
proxy_pass http://127.0.0.1:8181;
}
}

 虽然刷新配置后,可以跳转访问到GitLab,但是输入密码访问后,会一直提示422错误,才可可能是由于安装GitLab时,令其使用了https的传输方式,对于http的方式不接受导致的;但是毕竟是测试环境,也不做深究,换用另一套方案

Plan Two

 该方案简单粗暴,将OpenResty的端口该为其他的即可,无需和80冲突

 修改nginx.conf文件,server端口该为81,刷新Nginx配置

1
2
3
4
// 刷新Nginx配置

sbin/nginx -t
sbin/nginx -s reload

 这样就结局了端口冲突问题,但是这种就不是一个很完美的解决方案,一个环境下,运行了多套Nginx,无论是否是运维出生,都会感觉怪怪的,所以只能此处挖坑,后续有精力再去解决该问题。

参考文献

OpenResty官方文档