nginx.conf
# 以 root 用户运行 nginx
user root;
# nginx进程数,建议设置为等于CPU总核心数。
worker_processes 1;
# 定义错误日志路径 指nginx安装目录/logs/error.log
#error_log logs/error.log;
# 定义错误日志级别为 notice
#error_log logs/error.log notice;
# 定义错误日志级别为 info
#error_log logs/error.log info;
# 定义 pid 文件路径
#pid logs/nginx.pid;
# 事件区块开始
events {
# 单个进程最大连接数
# 根据硬件调整,和前面工作进程配合起来用,尽量大,但是别把cpu跑到100%就行。
# 理论上每台nginx服务器的最大连接数 = 单个进程的最大连接数 * 进程数
worker_connections 1024;
}
# 设定http服务器,利用它的反向代理功能提供负载均衡支持
http {
# include:导入外部文件mime.types,将所有types提取为文件,然后导入到nginx配置文件中
# mime.types 文件是一个用来映射文件扩展名与 MIME 类型(Multipurpose Internet Mail Extensions,多用途互联网邮件扩展)的文件。
# MIME 类型用于标识文件的内容类型,主要用于告知浏览器和其他客户端如何处理不同类型的文件。
include mime.types;
# 默认文件类型
default_type application/octet-stream;
# 开启gzip压缩
# 默认off,是否开启gzip
gzip on;
# 要采用 gzip 压缩的 MIME 文件类型,其中 text/html 被系统强制启用;
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
# 上面两个开启基本就能跑起了,下面的愿意折腾就了解一下
# 默认 off,该模块启用后,Nginx 首先检查是否存在请求静态文件的 gz 结尾的文件,如果有则直接返回该 `.gz` 文件内容
gzip_static on;
# 默认 off,nginx做为反向代理时启用,用于设置启用或禁用从代理服务器上收到相应内容 gzip 压缩
gzip_proxied any;
# 用于在响应消息头中添加 `Vary:Accept-Encoding`,使代理服务器根据请求头中的 `Accept-Encoding` 识别是否启用 gzip 压缩
gzip_vary on;
# gzip 压缩比,压缩级别是 1-9,1 压缩级别最低,9 最高,级别越高压缩率越大,压缩时间越长,建议 4-6
gzip_comp_level 6;
# 获取多少内存用于缓存压缩结果,16 8k 表示以 8k*16 为单位获得
gzip_buffers 16 8k;
# 允许压缩的页面最小字节数,页面字节数从header头中的 `Content-Length` 中进行获取。默认值是 0,不管页面多大都压缩。建议设置成大于 1k 的字节数,小于 1k 可能会越压越大
# gzip_min_length 1k;
# 默认 1.1,启用 gzip 所需的 HTTP 最低版本
gzip_http_version 1.1;
# 定义日志格式
#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;
# 开启高效文件传输模式,指定nginx是否调用sendfile函数来输出文件,对于普通应用必须设为on
# 如果用来进行下载等应用磁盘IO重负载应用,可设置为off,以平衡磁盘与网络I/O处理速度,降低系统的负载。注意:如果图片显示不正常把这个改成off。
sendfile on;
# 长连接超时时间,单位是秒
keepalive_timeout 65;
# 第一个Server区块开始,表示一个独立的虚拟主机站点
server {
# 定义服务器监听的端口,默认80
listen 85;
# 服务器名称
server_name localhost;
# 限制客户端请求体的最大大小为100MB,防止上传过大的文件
client_max_body_size 100m;
# 设置客户端请求体缓冲区的大小为2MB,用于处理较大的POST请求
client_body_buffer_size 2048k;
# 设置客户端请求头缓冲区的大小为10MB,用于处理较大的HTTP头部
client_header_buffer_size 10m;
# 设置临时文件写入的大小为10MB,用于处理大文件上传时的临时存储
proxy_temp_file_write_size 10m;
# 为FastCGI缓存设置8个128KB的缓冲区,用于提高FastCGI应用的性能
fastcgi_buffers 8 128k;
# 设置代理读取超时时间为3600秒(1小时),在此时间内未收到上游服务器响应则超时
proxy_read_timeout 3600;
# 设置代理连接超时时间为600秒(10分钟),在此时间内未连接到上游服务器则超时
proxy_connect_timeout 600;
# 设置keep-alive连接超时时间为600秒(10分钟),在此时间内保持连接以便复用
keepalive_timeout 600;
# location块用来定义如何处理特定的请求URI,有多种匹配规则:
# location块前缀匹配,如果多个块匹配到了,会选择最长前缀
# 匹配以 /rainstormZuul 开头的请求
location /rainstormZuul {
# 重写URI(这里是剔除rainstormZuul)
rewrite "^/rainstormZuul/(.*)$" /$1 break;
# 反向代理,将URI转发到指定的上游服务器
proxy_pass http://127.0.0.1:11004;
}
# location块精确匹配,如果精确匹配到了,不会再进行其他匹配
# 匹配为 /exact 的请求
location = /exact {
# 处理请求
}
# location块区分大小写的正则表达式匹配
# 匹配以 .java 结尾的请求,区分大小写
location ~ \.java$ {
# root 指定静态文件的根目录路径
# 最终路径为:root指定路径/URI路径
# 可以写绝对/相对路径,相对路径是相对于nginx目录的路径。
# 指定静态文件根目录路径为 nginx目录/html/dist-java
root html/dist-java
# 指定首页,多个用空格分开,nginx会顺序查找,使用最先找到的
index index.html index.htm;
}
# location块不区分大小写的正则表达式匹配
# 匹配以 jpg、jpeg、png 或 gif 结尾的请求,不区分大小写
location ~* \.(jpg|jpeg|png|gif)$ {
# 最终路径为:alias指定路径/去掉匹配路径后的URI路径
alias html/dist-java
index index.html index.htm;
}
location /ams {
# 设置别名目录,将 /ams 映射到 /opt/html/ams 也就不需要root了
alias /opt/html/ams;
index front/views/indexNologin-v2.html index.html;
# 添加响应头,允许所有域进行跨域请求
add_header 'Access-Control-Allow-Origin' '*';
# 添加响应头,允许跨域请求时发送凭据
add_header 'Access-Control-Allow-Credentials' 'true';
# 添加响应头,允许的HTTP方法为 GET, POST, OPTIONS
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
# 添加响应头,允许的自定义请求头
add_header 'Access-Control-Allow-Headers' 'DNT,Content-Type';
# 设置代理使用的HTTP版本为1.1
proxy_http_version 1.1;
# 设置连接头为空,以保持连接
proxy_set_header Connection "";
# 动态页面,交给tomcat处理
# !表示取反,-e检查文件是否存在
# $request_filename是一个Nginx变量,表示根据当前根目录和URI生成的文件路径
if ( !-e $request_filename) {
# 如果请求的文件不存在,将请求代理到本地的Tomcat服务器
proxy_pass http://127.0.0.1:8080;
}
}
location / {
# 当用户刷新页面时,Nginx会先检查当前URL是否存在,如果不存在,就会尝试访问index.html,从而可以正常显示页面。
try_files $uri $uri/ /index.html;
}
# 错误页面路由
# 出现对应的http状态码时,转发到下面的location块
error_page 500 502 503 504 /50x.html;
location = /50x.html {
# 指定对应的站点目录为html
root html;
}
}
}
root 与 alias
root:拼接
location /static {
root /var/www;
index index.html;
}
如果请求 URI 是 /static/images/logo.png,
Nginx 会将root路径/var/www 拼接到 URI地址/static/images/logo.png前面,
即请求 /var/www/static/images/logo.png
alias:替换
location /static {
alias /var/www;
index index.html;
}
如果请求 URI 是 /static/images/logo.png,
Nginx 会将root地址 替换到 URI地址 /static/images/logo.png中,不会保留 /static 前缀,
即请求/var/www/images/logo.png。