共计 1771 个字符,预计需要花费 5 分钟才能阅读完成。
OpenResty 是一个基于 Nginx 与 Lua 的高性能 Web 平台,它通过集成 LuaJIT(一种非常快的 Lua 解释器),可以直接在 Nginx 配置文件里写代码,处理复杂的业务逻辑。
新建
搭建方式如下:
# 拷贝配置文件
mkdir -p openresty && \
docker run -d --name openresty openresty/openresty:1.27.1.2-10-alpine && \
docker cp openresty:/usr/local/openresty/nginx/conf/ ./openresty/nginx && \
docker cp openresty:/etc/nginx/conf.d/ ./openresty/conf.d/ && \
docker cp openresty:/usr/local/openresty/nginx/html/ ./openresty/html/ && \
docker rm -f openresty
docker-compose 运行:
services:
openresty:
image: openresty/openresty:1.27.1.2-10-alpine
container_name: openresty
network_mode: "host"
volumes:
- ./openresty/nginx:/usr/local/openresty/nginx/conf
- ./openresty/conf.d:/etc/nginx/conf.d
- ./openresty/html:/usr/local/openresty/nginx/html
- ./openresty/logs:/usr/local/openresty/nginx/logs
restart: always
(可选)如果想让日志打印在控制台,即通过 docker logs 查看:
sed -i 's|access_log .*|access_log /dev/stdout;|g' $(find openresty/conf.d -name "*.conf")
sed -i 's|error_log .*|error_log /dev/stderr;|g' $(find openresty/conf.d -name "*.conf")
Nginx 迁移
注意这里的 openresty/conf.d 目录是原来 nginx使用的配置目录。
拷贝文件(如果没有文件,报错不用管)
# 日志文件
cp -r nginx/conf.d/* openresty/conf.d
# 静态文件
cp -r nginx/html/* openresty/html/
如果有用到静态资源目录:
sed -i 's|/usr/share/nginx/html|/usr/local/openresty/nginx/html|g' $(find openresty/conf.d -name "*.conf")
可能遇到的问题(理论上来书都要执行)
nginx: [emerg] unknown log format "main" in /etc/nginx/conf.d/blog.conf:16
sed -i 's/ access_log \(.*\) main;/ access_log \1;/g' $(find openresty/conf.d -name "*.conf")
还原命令:sed -i 's/ access_log (.);/ access_log \1 main;/g' $(find openresty/conf.d -name ".conf")
open() "/var/log/nginx/blog.access.log" failed (2: No such file or directory)
sed -i 's|/var/log/nginx/|/usr/local/openresty/nginx/logs/|g' $(find openresty/conf.d -name "*.conf")
nginx: [emerg] unknown "connection_upgrade" variable
编辑 openresty/nginx/nginx.conf 文件,include 指令前添加:
map $http_upgrade $connection_upgrade {
default keep-alive;
'websocket' upgrade;
'' close;
}
AD:【腾讯云服务器大降价】2核4G 222元/3年 1核2G 38元/年
正文完