nginx_配置文件示例 提供一份nginx配置文件实例,包含以下功能;静态资源下载负载均衡正则表达式ssl配置示例代码#--服务代理组件 upstream cmc-terminal-m1-gateway { # 同一个用户,登陆了A,一直访问A,第二个用户访问的时候才会访问B;(诊对于用户,雨露均沾) ip_hash; #ip:端口 server 127.0.0.1:20000 ; } #--服务代理组件 upstream ftp { # 同一个用户,登陆了A,一直访问A,第二个用户访问的时候才会访问B;(诊对于用户,雨露均沾) ip_hash; #ip:端口 server 192.168.252.72:80 ; } # websocket示例 map $http_upgrade $connection_upgrade { default upgrade; close; } # 缓存 proxy_cache_path /data/nginx/cache levels1:2 keys_zoneimooc_cache:10m max_size10g inactive60m use_temp_pathoff; # 限制ip访问,只能使用域名访问 server { # 端口号 listen 20166 default_server; # 只能以域名访问 server_name _; return 403; } server { # 端口号 listen 20166; # 只能以域名访问 server_name cloud.xxx.com keepalive_timeout 6000s; client_body_timeout 2000s; send_timeout 3000s; proxy_read_timeout 30000s; # 设置上传文件最大限制 client_max_body_size 200m; # ssl on; ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m; # 证书路径 ssl_certificate conf.d/xxx/xxx.com.crt; # 请求认证 key 的路径 ssl_certificate_key conf.d/xxx/xxx.com.key; #ssl_session_timeout 10m; #charset koi8-r; # 访问日志 #access_log /var/log/nginx/host.access.log main; # 位置;是要在url上输入的名字 location / { # docs:指的是定义的upstream的名字 proxy_pass http://cmc-terminal-m1-gateway; # 在转发的时候,把真实的ip带上 proxy_set_header X-Real-IP $remote_addr; # 在转发的时候,把真实的端口带上 proxy_set_header Host $host:$server_port; # 转发后台带上协议 proxy_set_header X-Forwarded-Proto $scheme; } # 前端根目录(前端vue部署,不用每次都强制刷新页面或者开启无痕) location / { # 访问的目录 虚拟目录(location 后面的值) root /data/resources/erp/; # 自动的索引:打开 autoindex on; # 大小以,kb,mb,显示 autoindex_exact_size off ; # 以本地时间显示 autoindex_localtime on; proxy_set_header Host $host:$server_port; # html不缓存 location ~ \.html$ { add_header Cache-Control no-cache; } #静态资源带hash强制缓存 location ~ \.(js|css|png|jpg|woff2)$ { add_header Cache-Control max-age31536000; } } location ~ ^/(ftp|aa) { # docs:指的是定义的upstream的名字 proxy_pass http://erpPc; # 在转发的时候,把真实的ip带上 proxy_set_header X-Real-IP $remote_addr; # 在转发的时候,把真实的端口带上 proxy_set_header Host $host:11300; } location /head_web { # 访问的目录 虚拟目录(location 后面的值) root /data/ftp/fuser/; # 自动的索引:打开 autoindex on; # 大小以,kb,mb,显示 autoindex_exact_size off ; # 以本地时间显示 autoindex_localtime on; } # 位置;是要在url上输入的名字 location ~ .*\.(gif|jpg|jpeg|bmp|png|mp3|wma|mp4|swf|txt|docx|doc|xls|xlsx)$ { # 访问的目录 虚拟目录(location 后面的值) root /data/ftp/tmkj/; add_header Content-Disposition attachment; filename$arg_filename; proxy_cache imooc_cache; proxy_cache_valid 200 304 12h; proxy_cache_valid any 10m; proxy_cache_key $host$uri$is_args$args; } # 去掉二级目录 location /test/aa { # docs:指的是定义的upstream的名字 proxy_pass http://erpPc; # 在转发的时候,把真实的ip带上 proxy_set_header X-Real-IP $remote_addr; # 在转发的时候,把真实的端口带上 proxy_set_header Host $host:11300; rewrite ^/test/(.*)$ /$1 break; } # websocket示例 location /xxx{ proxy_pass http://xxx; proxy_redirect off; proxy_set_header Host $host:50070; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection upgrade; proxy_connect_timeout 300s; proxy_send_timeout 300s; proxy_read_timeout 300s; } # 防盗链 location ~/ERP/.*\.(jpg|png|gif|jpeg)$ { valid_referers xxx.xxx.com; if ($invalid_referer) { return 403; } proxy_pass http://erpftp; proxy_redirect off; proxy_set_header Host $host:6261; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } error_page 497 https://$host:$server_port$uri$is_args$args; }核心配置文件示例:#user nobody; worker_processes 4; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; events { worker_connections 1024; } 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; #access_log logs/access.log main; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; # 关闭服务器版本 server_tokens off; # 只允许同域名的嵌套网页 add_header X-Frame-Options SAMEORIGIN; # 上传文件的限制大小 client_max_body_size 5000m; #add_header X-Content-Type-Options nosniff; add_header X-Download-Options noopen always; add_header X-Permitted-Cross-Domain-Policies master-only always; add_header Referrer-Policy same-origin always; #配置跨域 add_header Access-Control-Allow-Origin http://xxx.xxx.com:xxx; add_header Access-Control-Allow-Methods GET,POST,OPTIONS; add_header Access-Control-Allow-Headers *; gzip on; gzip_comp_level 6; gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xmlrss text/javascript; # 包含其他以conf结论的配置文件 include /usr/local/nginx/conf.d/*.conf; }nginx日志文件太大,自动切割日志文件的批量脚本,增加crond定时任务#!/bin/bash #function:cut nginx log files for lnmp v0.5 and v0.6 #author: http://lnmp.org # 设置日志文件的路径 log_files_path/usr/local/nginx/logs/ # 日志文件路径增加日志 log_files_dir${log_files_path}$(date -d yesterday %Y)$(date -d yesterday %m) # 设置切割的日志文件 # log_files_name(access vpser licess) log_files_name(access) # 设置nginx的访问路径set the path to nginx. nginx_sbin/usr/local/nginx/sbin/nginx # 设置保存的天数 save_days5 echo 配置信息:日志文件路径:$log_files_dir,保存天数:$save_days ############################################ # 执行切割的脚本 ############################################ # 创建日志文件的目录 mkdir -p $log_files_dir # 日志文件数量 log_files_num${#log_files_name[]} echo 日志文件数量:$log_files_num # 切割日志文件 cut nginx log files for((i0;i$log_files_num;i));do # 移动日志文件的路径 mv ${log_files_path}${log_files_name[i]}.log ${log_files_dir}/${log_files_name[i]}_$(date -d yesterday %Y%m%d).log echo 日志文件数量,正在移动:${log_files_path}${log_files_name[i]}.log done # 删除指定天数的日志 find $log_files_path -mtime $save_days -exec rm -rf {} \; $nginx_sbin -s reload切分tomcat的catalina.out文件方法一#!/bin/bash # 需要开启定时任务一天执行一次 DATEdate %Y-%m-%d # 设置日志文件的路径 log_files_path/data/tomcat/apache-tomcat-9.0.84_erp_1/logs/ # 设置切割的日志文件 # log_files_name(access vpser licess) log_files_namecatalina.out # 设置保存的天数 save_days5 echo 配置信息:日志文件路径:$log_files_path,保存天数:$save_days ############################################ # 执行切割的脚本 ############################################ # 创建日志文件的目录 cp $log_files_path${log_files_name} $log_files_path${log_files_name}.$DATE wait # 删除指定天数的日志 find $log_files_path -mtime $save_days -exec rm -rf {} \; echo $log_files_pathcatalina.out方法二