反向代理

  • proxy_pass用于转发请求
server {  
listen 8080; #对外监听端口
server_name localhost; #主机名称

#请求路径
location / {
root html; # Nginx默认值
index index.html index.htm;
}

# 静态化配置,所有静态请求都转发给 nginx 处理,存放目录为 my-project
location ~ .*\.(html|htm|gif|jpg|jpeg|bmp|png|ico|js|css)$ {
root /usr/local/var/www/my-project; # 静态请求所代理到的根目录
}

# 动态请求匹配到path为'node'的就转发到8002端口处理
location /node/ {
proxy_pass http://localhost:8002; # 充当服务代理
}
}

root与alias

root与alias:这两个指令主要功能都是将url映射为文件路径,以返回静态文件内容。主要的差别在于:

  • root有一个默认值html,可以出现在http、server和location指令块内,并且会将完整的url映射进文件路径中
  • alias没有默认值,只能出现在location指令块中,并且只会将location后的url映射到文件路径 举例说明:
location /root {
root html
}

location /alias {
alias html
}

当访问localhost/root/时,根据配置的指令值,会在html后加上/root再去访问index.html。所以实际访问的路由地址为localhost/html/root/index.html。这是因为root会将完整的url映射进文件路径中。
而访问localhost/alias/时,访问的路由地址为localhost/html/index.html

location匹配规则

nginxlocation 匹配规则是用于指定不同请求 URI 的处理方式的。location 块可以根据不同的匹配规则来定义,以确定应该如何处理特定的请求。以下是 nginx 中常见的 location 匹配规则:

  1. 前缀匹配:
location /path/ {
# 处理以 "/path/" 开头的 URI
}
  1. 精确匹配:
location = /exact_path {
# 只处理精确匹配 "/exact_path" 的 URI
}
  1. 正则表达式匹配:
location ~ \.php$ {
# 处理以 ".php" 结尾的 URI,使用正则表达式匹配
}
  1. 不区分大小写的正则表达式匹配:
location ~* \.png$ {
# 不区分大小写地处理以 ".png" 结尾的 URI
}
  1. 最长前缀匹配:
location ^~ /images/ {
# 处理以 "/images/" 开头的 URI,如果匹配成功,停止搜索其他location
}
  1. 优先级:
    location 的匹配是按照配置文件中出现的顺序优先匹配的,因此更早出现的 location 具有更高的优先级。

以上是一些常见的 nginx location 匹配规则。在配置文件中,可以根据实际需求使用这些规则,以确保请求被正确地路由和处理。

rewrite

  • rewrite功能就是,使用nginx提供的全局变量或自己设置的变量,结合正则表达式和标记位实现URL重写以及重定向
  • 比如:更换域名后需要保持旧的域名能跳转到新的域名上、某网页发生改变需要跳转到新的页面、网站防盗链等等需求。
  • rewrite只能放在server{},location{},if{}中,并且默认只能对域名后边的除去传递的参数外的字符串起作用,
    location  /static/
    {
    rewrite ^ http://www.abc.com ;
    }

解释:上面实现的功能:假设网站域名为www.blog.com;那么配置上面的功能是输入www.blog.com/static/时,不管static后面是什么页面(页面也可以不存在),那么最终会同样跳转到www.abc.com这个网站。

Alt text

其他

location  /audit-report/ {
add_header X-Frame-Options SAMEORIGIN # 防止页面被嵌套
}
location  /audit-report/ {
proxy_cookie_path / "/; httponly; secure; SameSite=Lax";
}

proxy_cookie_path是用于在Nginx中配置代理服务器的指令,它用于设置代理服务器传递的HTTP响应中的Cookie的路径。在你提供的查询中,这个指令被用来设置Cookie的路径为”/“,并且附带了一些安全性相关的选项:

  1. httponly:这个选项告诉浏览器只在HTTP请求中发送Cookie,不允许脚本通过document.cookie访问。这有助于减少跨站脚本攻击(XSS)的风险。
  2. secure:这个选项要求Cookie只能通过加密的连接(HTTPS)传输,提高了数据的安全性,防止在传输过程中被窃听。
  3. SameSite=Lax:这个选项是为了防止跨站请求伪造(CSRF)攻击。它限制了第三方站点对Cookie的访问,仅在顶级导航时发送Cookie,从而减少了CSRF攻击的潜在风险。

总体而言,这个配置有助于提高通过Nginx代理服务器传递的Cookie的安全性。