前置
[源码软件包](Happlelaoganma | nginx)
1
| sudo apt-get install -y libssl-dev libpcre3 libpcre3-dev
|
openresty Makefile生成脚本: make.sh
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
| #!/bin/bash ./configure \ --prefix=/etc/openresty \ --add-module=/opt/ngx_http_proxy_connect_module \ --with-luajit \ --with-pcre-jit \ --with-stream \ --with-stream_ssl_module \ --with-http_ssl_module \ --with-http_auth_request_module \ --with-http_v2_module \ --with-http_v3_module \ --without-mail_pop3_module \ --without-mail_imap_module \ --without-mail_smtp_module \ --with-http_stub_status_module \ --with-http_realip_module \ --with-http_addition_module \ --with-http_auth_request_module \ --with-http_secure_link_module \ --with-http_random_index_module \ --with-http_gzip_static_module \ --with-http_sub_module \ --with-http_dav_module \ --with-http_flv_module \ --with-http_mp4_module \ --with-http_gunzip_module \ --with-threads \ --with-file-aio \ --without-http_echo_module \ -j2
|
ngx_http_proxy_connect_module补丁添加
1
| patch -d build/nginx-1.25.3/ -p 1 < /opt/ngx_http_proxy_connect_module/patch/proxy_connect_rewrite_102101.patch
|
系统优化
文件打开数量
1 2 3 4 5 6 7 8
| vim /etc/security/limits.conf
#设置文件最大打开数量 * - nofile 65535 * soft nofile 65535 * hard nofile 65535 root soft nofile 65535 root hard nofile 65535
|
内核参数优化
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
| #允许TIME_WAIT套接字数量的最大值 net.ipv4.tcp_max_tw_buckets = 6000 #启用timewait快速回收 net.ipv4.tcp_tw_recycle = 1 #允许将TIME-WAIT sockets重新用于新的TCP连接 net.ipv4.tcp_tw_reuse = 1 #保持在FIN-WAIT-2状态的时间 net.ipv4.tcp_fin_timeout = 60 #TCP发送keeplive消息的频度,若将其设置的小一些,可以更快地清理无效的连接 net.ipv4.tcp_keepalive_time = 30 #监听队列长度 net.core.somaxconn = 262144 #允许送到队列的数据包的最大数目 net.core.netdev_max_backlog = 262144 #TCP三次握手建立阶段接受SYN请求队列的最大长度 net.ipv4.tcp_max_syn_backlog = 262144 #TCP接受缓存(用于TCP接受滑动窗口)的最小值、默认值、最大值 net.ipv4.tcp_rmem = 10240 87380 12582912 #TCP发送缓存(用于TCP发送滑动窗口)的最小值、默认值、最大值 net.ipv4.tcp_wmem = 10240 87380 12582912 #解决TCP的SYN攻击 net.ipv4.tcp_syncookies = 1 #内核缓冲区最大和默认大小 net.core.wmem_default = 8388608 net.core.rmem_default = 8388608 net.core.rmem_max = 16777216 net.core.wmem_max = 16777216
#开启路由转发功能 net.ipv4.ip_forward = 1
|
NGINX主配置文件
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 90 91
| worker_cpu_affinity auto; worker_processes auto; worker_rlimit_nofile 65535; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info;
#pid logs/nginx.pid;
events { use epoll; worker_connections 2048; multi_accept on; }
http { include mime.types; default_type application/octet-stream; charset utf-8; 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;
#开启高效文件传输模式 sendfile on; #增加包大小 减少网络堵塞 tcp_nopush on; #fastcgi缓存目录 fastcgi_cache_path /webdata/nginx/fastcgi_cache levels=1:2 keys_zone=cache_fastcgi:10m inactive=5m; #fastcgi缓存临时目录 fastcgi_temp_path /webdata/nginx/fastcgi_tmp; #fastcgi_cache fastcgi_cache cache_fastcgi; #FastCGI的超时时间 fastcgi_connect_timeout 600; #FastCGI传送请求的超时时间 fastcgi_send_timeout 600; #FastCGI接收请求的超时时间 fastcgi_read_timeout 600; #FastCGI应答第一部分需要用多大的缓冲区 fastcgi_buffer_size 16k; #FastCGI的缓冲区 fastcgi_buffers 16 16k; #FastCGI繁忙时候的缓冲区 fastcgi_busy_buffers_size 32k; #在写入fastcgi_temp_path时将用多大的数据块 fastcgi_temp_file_write_size 32k;
#fastcgi缓存设置 fastcgi_cache_valid 200 302 1h; fastcgi_cache_valid 301 1d; fastcgi_cache_valid any 1m; fastcgi_cache_min_uses 1; #连接超时时长 keepalive_timeout 60; #增加包大小 减少网络堵塞 tcp_nodelay on; #客户端请求头缓冲区大小 client_header_buffer_size 4k; #打开文件缓存 open_file_cache max=65535 inactive=20s; #打开文件缓存最少使用数量 open_file_cache_min_uses 1; #请求头超时时间 client_header_timeout 15; #请求体超时时间 client_body_timeout 15; #清理未响应连接 reset_timedout_connection on; #响应客户端超时时间 send_timeout 15; #客户端最大上传文件大小 client_max_body_size 10m; variables_hash_max_size 2048; variables_hash_bucket_size 64; include /webdata/nginx/server.conf; #关闭nginx错误版本显示 #server_tokens off; #openresty 服务器信息替换 more_set_headers "Server: Happlelaoganma"; }
|
module文件夹:
cache.conf
1 2 3 4 5 6 7 8 9 10 11
| location ~ \.*(ico|png|gif|jpe?g)$ { expires 30d; access_log off; }
location ~* \.(js|css)$ { expires 7d; log_not_found off; access_log off; }
|
refere.conf
1 2 3 4 5 6 7 8 9
| #防盗链 location ~*^.+\.(jpg|gif|png|swf|flv|wma|wmv|asf|mp3|mmf|zip|rar)$ { valid_referers none blocked www.benet.com benet.com; if($invalid_referer) { return 404; break; } access_log off; }
|
deny.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
| #禁止访问的文件或目录 location ~ ^/(\.user.ini|\.htaccess|\.git|\.env|\.svn|\.project|LICENSE|README.md) { return 404; }
#禁止在证书验证目录放入敏感文件 if ( $uri ~ "^/\.well-known/.*\.(php|jsp|py|js|css|lua|ts|go|zip|tar\.gz|rar|7z|sql|bak)$" ) { return 403; }
#禁止访问日志 location ~ .*\.(gif|jpg|jpeg|bmp|swf)$ { expires 30d; error_log /dev/null; access_log /dev/null; }
location ~ .*\.(js|css)?$ { expires 12h; error_log /dev/null; access_log /dev/null; }
|
error.conf
1 2 3 4 5
| #error page error_page 500 502 503 504 /50x.html; location = /50x.html { root html; }
|
gzip.conf
1 2 3 4 5 6 7 8 9 10
| location ~ \.*(txt|xml|html|js|css)$ { gzip on; #最小压缩原文件大小 gzip_min_length 1k; #压缩缓冲区大小 gzip_buffers 4 32k; gzip_types text/plain text/css text/javascriptapplication/json application/javascript application/x-javascriptapplication/xml; gzip_comp_level 6; gzip_http_version 1.1; }
|
ssl.conf
1 2 3 4 5 6 7 8 9
| ssl_certificate /ssl/happlelaoganma.cn_bundle.crt; ssl_certificate_key /ssl/happlelaoganma.cn.key;
ssl_session_cache shared:SSL:1m; ssl_session_timeout 5m;
ssl_prefer_server_ciphers on; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
|
openresty by Systemd
1
| vim /etc/systemd/system/openresty.service
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| [Unit] Description=The OpenResty Application After=syslog.target network-online.target remote-fs.target nss-lookup.target Wants=network-online.target
[Service] Type=forking PIDFile=/etc/openresty/nginx/logs/nginx.pid ExecStartPre=/etc/openresty/nginx/sbin/nginx -t -q -g 'daemon on; master_process on;' ExecStart=/etc/openresty/nginx/sbin/nginx -g 'daemon on; master_process on;' ExecReload=/etc/openresty/nginx/sbin/nginx -g 'daemon on; master_process on;' -s reload ExecStop=-/sbin/start-stop-daemon --quiet --stop --retry QUIT/5 --pidfile /etc/openresty/nginx/logs/nginx.pid TimeoutStopSec=5 KillMode=mixed
[Install] WantedBy=multi-user.target
|
代理服务器
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
| server { listen 80; # 监听端口,也可以是其他端口 listen 443 ssl http2; server_name www.happlelaoganma.cn; # 你的域名或服务器地址
location /download/ { rewrite ^/download(/.*)$ $1 break; proxy_pass http://game.happlelaoganma.cn:18080; }
#php反向代理 location / { proxy_pass https://10.7.7.11:22443; # 内网 PHP 服务器地址 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header Connection "close"; proxy_redirect off; }
#证书 ssl优化 include /webdata/nginx/module/ssl.conf; #禁止文件 #include /webdata/nginx/module/deny.conf; #错误页面 #include /webdata/nginx/module/error.conf; #缓存设置 #include /webdata/nginx/module/cache.conf; #压缩文件 #include /webdata/nginx/module/gzip.conf; }
|
皮肤站文件: server.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
| #MC皮肤站 server { listen 2280; listen 22443 ssl;
#server_name 192.168.14.243; access_log logs/web_access.log; root /webdata/skin/public;
index index.php;
#skin伪静态 location / { try_files $uri $uri/ /index.php?$query_string; }
#代理访问php location ~ \.php$ { try_files $uri =404; fastcgi_keep_conn on; fastcgi_connect_timeout 60s; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_split_path_info ^(.+\.php)(/.+)$; include fastcgi.conf; }
#证书 ssl优化 include /webdata/nginx/module/ssl.conf; #禁止文件 include /webdata/nginx/module/deny.conf; #错误页面 include /webdata/nginx/module/error.conf; #缓存设置 include /webdata/nginx/module/cache.conf; #压缩文件 include /webdata/nginx/module/gzip.conf; }
#正向代理服务器 server { listen 1180; server_name 192.168.14.243; resolver 8.8.8.8 valid=60s ipv6=off; resolver_timeout 30s; proxy_connect; proxy_connect_allow 80 443 563; proxy_connect_connect_timeout 20s; proxy_connect_read_timeout 20s; proxy_connect_send_timeout 20s; location / { proxy_pass $scheme://$http_host$request_uri; proxy_set_header Host $host; } }
|