location /abc/apps/system/ { add_header Cache-Control no-cache,no-store; alias /abc/abc_system_web/ index index.html } |
no-cache:使用 no-cache 指令的目的是为了防止从缓存中返回过期的资源。“no-cache” 指令告诉浏览器和代理服务器不要缓存响应数据。这意味着缓存会将响应数据存储在缓存中,但在将响应返回给客户端之前,必须先将该响应提交给服务器进行验证。服务器会检查响应的有效性,如果发现响应仍然有效,服务器会返回一个新的验证令牌(ETag),以通知缓存可以使用它,否则服务器将返回新的响应数据。这种方式被称为“验证缓存”。 no-store:“no-store” 指令更为严格,它要求浏览器和代理服务器不要在任何情况下缓存响应数据。这意味着每次请求都需要从原始服务器重新获取数据,不进行任何缓存。这可以用于敏感数据或者响应数据频繁更改的情况,以确保不会在客户端或代理服务器上存储敏感信息或者过期的数据 同时配置了no-cache和no-store,no-store的优先级要高,我没看具体是什么场景下什么例子,但是同时出现肯定是没问题的 |
root与alias主要区别在于nginx如何解释location后面的uri,这会使两者分别以不同的方式将请求映射到服务器文件上。 root的处理结果是:root路径+location路径 alias的处理结果是:使用alias路径替换location路径 alias是一个目录别名的定义,root则是最上层目录的定义。 还有一个重要的区别是alias后面必须要用“/”结束,否则会找不到文件的。。。而root则可有可无~~ root实例: location ^~ /t/ { root /www/root/html/; } 如果一个请求的URI是/t/a.html时,web服务器将会返回服务器上的/www/root/html/t/a.html的文件。 alias实例: location ^~ /t/ { alias /www/root/html/new_t/; } 如果一个请求的URI是/t/a.html时,web服务器将会返回服务器上的/www/root/html/new_t/a.html的文件。注意这里是new_t,因为alias会把location后面配置的路径丢弃掉,把当前匹配到的目录指向到指定的目录。 注意: 1. 使用alias时,目录名后面一定要加"/"。 3. alias在使用正则匹配时,必须捕捉要匹配的内容并在指定的内容处使用。 4. alias只能位于location块中。(root可以不放在location中) |
#反向代理后端服务器 upstream [连接池的名称] { [存放的IP] server [ip1]:[端口] [分发策略]; server [ip2]:[端口] [分发策略]; }
server { ... ... location / { proxy_pass http://[连接池的名称] ; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-Proto $scheme; } } |
#这里 $host 是 Nginx 变量,它包含了请求的主机名。 proxy_set_header Host $host; # 将$remote_addr的值放进变量X-Real-IP中,$remote_addr的值为客户端的ip proxy_set_header X-Real-IP $remote_addr; # 客户端通过代理服务访问后端服务, 后端服务通过该变量会记录真实客户端地址 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # X-Forwarded-Proto(XFP)报头是用于识别协议HTTP或HTTPS的,即用户客户端实际连接到代理或负载均衡的标准报头。 proxy_set_header X-Forwarded-Proto $scheme; |