下载地址
openresty
nginx-module-vts
nginx-module-stream-sts
nginx-module-sts
模块下载zip格式的, tar包有一个无法解压
目录结构
1 2 3 4 5 6 7 8 9 10
| tree . ├── Dockerfile ├── nginx.conf ├── nginx-module-stream-sts-0.1.1.zip ├── nginx-module-sts-0.1.1.zip ├── nginx-module-vts-0.1.18.zip ├── openresty-1.21.4.2.tar.gz ├── upstream-default.conf └── vhost-default.conf
|
Dockerfile
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
| FROM alpine:latest AS openresty-vts-build
ADD openresty-*.tar.gz /usr/local/src/ COPY nginx-module-vts-*.zip /usr/local/src/ COPY nginx-module-sts-*.zip /usr/local/src/ COPY nginx-module-stream-sts-*.zip /usr/local/src/
RUN cd /usr/local/src && \ unzip nginx-module-vts-*.zip && \ unzip nginx-module-sts-*.zip && \ unzip nginx-module-stream-sts-*.zip
RUN set -eux && sed -i 's/dl-cdn.alpinelinux.org/mirrors.tuna.tsinghua.edu.cn/g' /etc/apk/repositories
RUN apk add perl build-base make pcre-dev zlib-dev openssl-dev && \ cd /usr/local/src/openresty-* && \ /usr/local/src/openresty-*/configure \ --with-http_stub_status_module --with-http_ssl_module \ --with-http_gzip_static_module --add-module=/usr/local/src/nginx-module-vts-0.1.18 \ --add-module=/usr/local/src/nginx-module-sts-0.1.1 --add-module=/usr/local/src/nginx-module-stream-sts-0.1.1 && \ make && make install
FROM alpine:latest RUN set -eux && sed -i 's/dl-cdn.alpinelinux.org/mirrors.tuna.tsinghua.edu.cn/g' /etc/apk/repositories
RUN apk add perl pcre-dev zlib-dev openssl-dev
COPY --from=openresty-vts-build /usr/local/openresty /usr/local/openresty RUN chmod +x /usr/local/openresty/nginx/sbin/nginx && \ mkdir /usr/local/openresty/nginx/conf/{vhosts,upstream} && \ ln -sf /dev/stdout /usr/local/openresty/nginx/logs/access.log && \ ln -sf /dev/stderr /usr/local/openresty/nginx/logs/error.log COPY nginx.conf /usr/local/openresty/nginx/conf/nginx.conf COPY vhost-default.conf /usr/local/openresty/nginx/conf/vhosts/default.conf COPY upstream-default.conf /usr/local/openresty/nginx/conf/upstream/upstream-default.conf
USER root
ENV LUA_PATH="/usr/local/openresty/site/lualib/?.ljbc;/usr/local/openresty/site/lualib/?/init.ljbc;/usr/local/openresty/lualib/?.ljbc;/usr/local/openresty/lualib/?/init.ljbc;/usr/local/openresty/site/lualib/?.lua;/usr/local/openresty/site/lualib/?/init.lua;/usr/local/openresty/lualib/?.lua;/usr/local/openresty/lualib/?/init.lua;./?.lua;/usr/local/openresty/luajit/share/luajit-2.1.0-beta3/?.lua;/usr/local/openresty/luajit/share/lua/5.1/?.lua;/usr/local/openresty/luajit/share/lua/5.1/?/init.lua" ENV LUA_CPATH="/usr/local/openresty/site/lualib/?.so;/usr/local/openresty/lualib/?.so;./?.so;/usr/local/openresty/luajit/lib/lua/5.1/?.so;/usr/local/openresty/luajit/lib/lua/5.1/?.so"
WORKDIR /usr/local/openresty/nginx
EXPOSE 80 EXPOSE 8000
ENTRYPOINT ["/usr/local/openresty/nginx/sbin/nginx"] CMD ["-g","daemon off;"]
|
nginx.conf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89
| user nobody; worker_processes auto;
pcre_jit on;
error_log logs/error.log warn; pid logs/nginx.pid;
events { worker_connections 65535; } http { include mime.types; default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"';
log_format json '{"@timestamp":"$time_iso8601",' '"host":"$hostname",' '"server_ip":"$server_addr",' '"client_ip":"$remote_addr",' '"xff":"$http_x_forwarded_for",' '"domain":"$host",' '"url":"$uri",' '"referer":"$http_referer",' '"args":"$args",' '"upstreamtime":"$upstream_response_time",' '"responsetime":"$request_time",' '"request_method":"$request_method",' '"status":"$status",' '"size":"$body_bytes_sent",' '"request_body":"$request_body",' '"request_length":"$request_length",' '"protocol":"$server_protocol",' '"upstreamhost":"$upstream_addr",' '"file_dir":"$request_filename",' '"http_user_agent":"$http_user_agent"' '}';
access_log logs/access.log json; sendfile on;
keepalive_timeout 65;
fastcgi_buffer_size 128k; fastcgi_buffers 8 128k; fastcgi_busy_buffers_size 128k; fastcgi_temp_file_write_size 128k;
client_header_buffer_size 128k; client_body_buffer_size 1m; underscores_in_headers on;
vhost_traffic_status_zone; vhost_traffic_status_filter_by_host on; stream_server_traffic_status_zone;
server { listen 8000; server_name localhost; location /vts_status { vhost_traffic_status_display; vhost_traffic_status_display_format html; } location /sts_status { stream_server_traffic_status_display; stream_server_traffic_status_display_format html; } }
include vhosts/*.conf; } stream { server_traffic_status_zone; log_format proxy '$remote_addr - [$time_local] $status "$upstream_bytes_sent" "$upstream_bytes_received" - "$upstream_addr" "$upstream_connect_time"';
access_log logs/upstream-access.log proxy; open_log_file_cache off;
include upstream/*.conf; }
|
upstream-default.conf
1 2 3 4 5 6 7 8 9 10 11 12
| upstream example-server { hash $remote_addr consistent; server 172.16.20.11:8880; server 172.16.20.12:8880; server 172.16.20.13:8880; }
server { listen 8880; proxy_pass example-server; access_log logs/example-upstream.log proxy; }
|
vhost-default.conf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| server { listen 80; server_name 172.16.20.61; location / { root html; index index.html index.htm; } error_page 404 /404.html; error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } }
|
制作镜像
1
| docker build ./ -t openresty-vts:1.21.4.2-alpine
|
启动镜像
docker-compose编排文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| mkdir -pv /data/docker-compose/openresty-vts cat > /data/docker-compose/openresty-vts/docker-compose.yml << 'EOF' version: "3" services: openresty-vts: container_name: openresty-vts hostname: openresty-vts image: openresty-vts:1.21.4.2-alpine network_mode: host restart: always volumes: - /etc/localtime:/etc/localtime - /data/openresty-vts/nginx/logs:/usr/local/openresty/nginx/logs deploy: resources: limits: memory: 4G EOF
|
这里仅为了测试, 生产使用可以要把nginx.conf, vhosts, upstream通过volume挂载进去
启动
1
| cd /data/docker-compose/openresty-vts/; docker-compose up -d
|
grafana 监控模板: 9785