nginx:stable镜像的使用及说明
更新时间:2026年06月17日 09:52:35 作者:qq_31683775
这篇文章主要介绍了nginx:stable镜像的使用及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
nginx:stable镜像的使用
以前使用的nginx:stable-alpine
但是https加载很慢,所以尝试换成 nginx:stable,结果不仅https 快了,页面加载和接口调用都快了
docker run -d \
--name nginx-stable \
--restart unless-stopped \
--network app \
--hostname nginx \
-p 80:80 \
-p 443:443 \
-e TZ=Asia/Shanghai \
-e NGINX_ENTRYPOINT_QUIET_LOGS=1 \
-v /opt/docker-data/nginx/log:/etc/nginx/logs \
-v /opt/docker-data/nginx/static:/usr/share/nginx/html:ro \
-v /opt/docker-data/nginx/https-cert:/etc/nginx/https-cert:ro \
-v /opt/docker-data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf:ro \
-v /opt/docker-data/nginx/conf/conf.d:/etc/nginx/conf.d:ro \
-v /opt/docker-data/nginx/conf/sites-available:/etc/nginx/sites-available:ro \
-v /opt/docker-data/nginx/conf/sites-enabled:/etc/nginx/sites-enabled:ro \
-v /opt/docker-data/nginx/cache:/var/cache/nginx \
--ulimit nofile=65536:65536 \
--sysctl net.core.somaxconn=65535 \
--cpus 2 \
--memory 1g \
--memory-swap 1g \
nginx:stabledocker logs -f -t --tail 50 nginx-stable
在宿主机 /opt/docker-data/nginx/ 下新建一下文件夹
static sites-enabled sites-available log https-cert conf cache
在 conf 文件夹下新建 nginx.conf文件 和 conf.d 文件夹
nginx.conf 文件内容
#user nobody;
# worker 数和服务器的 cpu 数相等是最为适宜的。
# 设少了会浪费 cpu,设多了会造成 cpu 频繁切换上下文带来的损耗。
worker_processes 2;
# work 绑定 cpu(4 work 绑定 4cpu)。
# worker_cpu_affinity 0001 0010 0100 1000
# work 绑定 cpu (4 work 绑定 8cpu 中的 4 个) 。
# worker_cpu_affinity 0000001 00000010 00000100 00001000
#error_log logs/error.log;
#error_log logs/error.log notice;
error_log /etc/nginx/logs/error.log warn;
pid /tmp/nginx.pid;
events {
# 普通的静态访问最大并发数建议:worker_connections * worker_processes / 2
# 作为反向代理来说,最大并发数量建议 worker_connections * worker_processes / 4
# 因为作为反向代理服务器,每个并发会建立与客户端的连接和与后端服务的连接,会占用两个连接。
worker_connections 1024;
}
http {
server_tokens off;
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"';
#access_log logs/access.log main;
access_log /etc/nginx/logs/access.log;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
gzip on;
# 关闭etag,比较消耗性能,仅使用Last-Modified
etag off;
# 设置允许压缩的页面最小字节数; 这里表示如果文件小于这个大小,就不用压缩,因为没有意义,本来就很小.
gzip_min_length 2k;
# 设置压缩比率,最小为1,处理速度快,传输速度慢;9为最大压缩比,处理速度慢,传输速度快;
# 这里表示压缩级别,可以是0到9中的任一个,级别越高,压缩就越小,节省了带宽资源,但同时也消耗CPU资源,所以一般折中为6
gzip_comp_level 6;
# 指定压缩的文件类型
gzip_types text/plain application/x-javascript text/css application/xml text/javascript application/x-httpd-php application/javascript application/json;
limit_conn_log_level error;
limit_conn_status 429;
limit_req_status 429;
# 设置了名为 ip_conn_pool 的存储区,大小为20兆字节,根据IP地址
limit_conn_zone $binary_remote_addr zone=ip_conn_pool:32m;
# 设置了名为 per_server_pool 的存储区,大小为20兆字节,根据server
limit_conn_zone $server_name zone=per_server_pool:32m;
limit_req_zone $binary_remote_addr zone=api_limit:256m rate=20r/s;
# 其中$binary_remote_addr有时需要根据自己已有的log_format变量配置进行替换
#server {
# listen 80 default_server;
# listen 443 default_server;
# server_name _;
# ssl_reject_handshake on;
# return 444;
#}
client_max_body_size 50m;
include /etc/nginx/conf.d/*.conf;
}在conf.d 文件夹下新建jszj.conf
jszj.conf 文件内容
server {
listen 80;
#listen 8001;
listen 443 ssl;
http2 on;
ssl_certificate /etc/nginx/https-cert/jnajszj.mmwzcloud.com.pem;
ssl_certificate_key /etc/nginx/https-cert/jnajszj.mmwzcloud.com.key;
server_name jszj.mmwzcloud.com default_server;
# 1. 优化 SSL 配置
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers 'TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384';
ssl_prefer_server_ciphers off;
# 2. 优化会话缓存
ssl_session_cache shared:SSL:10m; # 减小到 10m
ssl_session_timeout 1h;
ssl_session_tickets on;
# 3. 禁用有问题的功能
ssl_stapling off;
ssl_stapling_verify off;
# 4. 关键优化:减小缓冲区
ssl_buffer_size 4k; # 从 16k 改为 4k
# 防止 MIME 类型混淆攻击
add_header X-Content-Type-Options nosniff;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_redirect off;
location /api/ {
proxy_hide_header Access-Control-Allow-Origin;
add_header Access-Control-Allow-Origin *;
add_header "Access-Control-Allow-Headers" "Authorization, Origin, X-Requested-With, Content-Type, Accept";
add_header Access-Control-Allow-Methods GET,POST,OPTIONS,HEAD,PUT,DELETE;
add_header Access-Control-Allow-Credentials false;
if ($request_method = OPTIONS) {
return 204;
}
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme; # 重要!告诉后端是 HTTPS
proxy_pass http://jszj:38080/;
#proxy_pass http://www.baidu.com/;
}
#h5项目
location /apph/ {
alias /usr/share/nginx/html/apph/;
# VUE History 模式下刷新网页404问题
try_files $uri $uri/ /apph/index.html;
index index.html;
#expires 12h;
add_header Cache-Control "no-cache,must-revalidate";
error_log /etc/nginx/logs/error.log;
access_log /etc/nginx/logs/access.log;
}
#h5项目
location /static-file/ {
alias /usr/share/nginx/html/static-file/;
# VUE History 模式下刷新网页404问题
#try_files $uri $uri/ /apph/index.html;
#index index.html;
#expires 12h;
add_header Cache-Control "no-cache,must-revalidate";
error_log /etc/nginx/logs/error.log;
access_log /etc/nginx/logs/access.log;
}
#后台管理
location / {
# 项目在 /usr/share/nginx/html/vue-admin 目录
root /usr/share/nginx/html/vue-admin;
index index.html;
# 修正 try_files,避免循环
try_files $uri $uri/ /index.html;
add_header Cache-Control "no-cache,must-revalidate";
error_log /etc/nginx/logs/error.log;
access_log /etc/nginx/logs/access.log;
}
error_page 429 /429;
location = /429 {
default_type application/json;
return 429 '{"code":429,"message":"当前访问人数过多, 请稍后再试"}';
}
error_page 502 /server_shutdown;
error_page 503 /server_shutdown;
location = /server_shutdown {
default_type application/json;
return 502 '{"code":502,"message":"服务器升级维护中, 请稍后再试"}';
}
}
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
Nginx的伪静态配置中使用rewrite来实现自动补全的实例
这篇文章主要介绍了Nginx的伪静态配置中使用rewrite来实现自动补全的实例,文中对rewrite的相关参数和正则表达使用也做了介绍,需要的朋友可以参考下2015-12-12
nginx反向代理https内部定向到http报302的问题及解决
这篇文章主要介绍了nginx反向代理https内部定向到http报302的问题及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教2023-12-12


最新评论