nginx删除不安全的请求头

本文介绍了如何使用Nginx和Apache作为反向代理来实现HTTP到HTTPS的重定向以及将请求代理到本地服务。在Nginx配置中,设置了监听80和443端口,强制非HTTPS流量转向HTTPS,并将请求转发到本地4567端口。在Apache配置中,同样实现了80端口到HTTPS的重定向,通过ProxyPass指令将请求代理到本地5984端口。

###参考https://veggiespam.com/headers/
###nginx作为反向代理

# Redirect 80 --> 443
server {
    listen 80;
    listen [::]:80;
    server_name veggiespam.com www.veggiespam.com;

    return 301 https://$host$request_uri;
}

# HTTPS proxies to local instance
server {
    listen 443;
    listen [::]:443;
    server_name veggiespam.com www.veggiespam.com

    # Put TLS configuration here

    location / {
        proxy_pass http://localhost:4567;
        proxy_pass_header Set-Cookie;
        proxy_redirect off;
        proxy_set_header Accept-Encoding '';
        proxy_set_header Referer $http_referer;
        proxy_set_header Host $host;
        proxy_http_version 1.1;
# Remove Headers begin
        proxy_hide_header X-Powered-By;
        proxy_hide_header Server;
        proxy_hide_header X-AspNetMvc-Version;
        proxy_hide_header X-AspNet-Version;
# end Remove Headers
        proxy_set_header Cookie $http_cookie;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Server $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_no_cache $http_pragma $http_authorization;
        proxy_cache_bypass $http_pragma $http_authorization;
        proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504 http_404;
    }
}

###Apache作为反向代理

<VirtualHost *:80>
    ServerName www.veggiespam.com
    ServerAdmin evil-kitten@veggiespam.com

    ProxyRequests Off
    ProxyPreserveHost Off
    AllowEncodedSlashes On
    KeepAlive Off

    <Proxy *>
        Order deny,allow
        Allow from all
    </Proxy>

# Remove Headers begin
    Header unset X-Powered-By
    Header unset Server
    Header unset X-AspNetMvc-Version
    Header unset X-AspNet-Version
# end Remove Headers
    ProxyPass / http://localhost:5984/ example
    ProxyPassReverse / http://localhost:5984/
</VirtualHost>
### 配置 Nginx 移除特定或统一请求头 在处理 HTTP 请求时,有时需要通过 Nginx 删除或清理某些特定的请求头。这可以通过修改 Nginx 配置文件来实现。以下是详细的说明和配置方法。 #### 1. 使用 `proxy_set_header` 清理请求头Nginx 将客户端请求转发给后端服务器时,可以利用 `proxy_set_header` 指令覆盖或清空指定的请求头[^4]。例如,如果想移除所有的 `Authorization` 头部字段,可以在 `location` 块中这样写: ```nginx server { listen 80; server_name example.com; location / { proxy_pass http://backend; proxy_set_header Authorization ""; # 清空 Authorization 字段 } } ``` 这条指令的作用是告诉 Nginx 在将请求传递给后端之前,把原始请求中的 `Authorization` 头替换为空字符串,从而达到清除的效果[^4]。 #### 2. 批量移除多个请求头 如果有多个同的请求头都需要被移除,可以重复使用 `proxy_set_header` 指令分别针对每一个头部进行操作。比如下面的例子展示了如何去掉两个常见的敏感信息——`User-Agent` 和 `Referer`: ```nginx location / { proxy_pass http://backend; proxy_set_header User-Agent ""; proxy_set_header Referer ""; } ``` 值得注意的是,虽然这种方法简单有效,但对于数量较多的情况可能会显得冗长繁琐。因此建议只保留必要的最少化设置以简化维护成本。 #### 3. 自定义脚本扩展功能(高级) 对于非常复杂的需求场景,单纯依靠标准配置项可能无法满足全部要求。这时可考虑引入外部程序配合完成任务,或者编写 Lua 脚本来增强灵活性。然而这类做法通常涉及更高层次的技术栈理解以及额外的安全考量因素[^5]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值