标签: nginx

使用 X-Forwarded-For 标头限制 nginx 速率

我正在研究使用 nginx 的HttpLimitReqModule 进行速率限制。但是,请求都来自同一个 IP(负载均衡器),在标头中有真实的 IP 地址。

有没有办法根据X-Forwarded-For标头中的 ip 而不是源的 ip来设置 nginx 速率限制?

nginx rate-limiting

26
推荐指数
2
解决办法
2万
查看次数

用于 AWS Amazon ELB 运行状况检查的 Nginx 解决方案 - 不带 IF 返回 200

我有以下代码在 Nginx 上工作,以保持 AWS ELB 健康检查。

map $http_user_agent $ignore {
  default 0;
  "ELB-HealthChecker/1.0" 1;
}

server {
  location / {
    if ($ignore) {
      access_log off;
      return 200;
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

我知道 Nginx 最好避免使用“IF”,我想问一下是否有人会知道如何在没有“if”的情况下重新编码?

谢谢你

nginx amazon-ec2 amazon-web-services amazon-elb

26
推荐指数
3
解决办法
3万
查看次数

nginx 反向代理 - 尝试上游 A,然后是 B,然后是 A

我正在尝试将 nginx 设置为具有大量后端服务器的反向代理。我想按需启动后端(在第一个请求时),所以我有一个控制过程(由 HTTP 请求控制),它根据它收到的请求启动后端。

我的问题是配置 nginx 来做到这一点。这是我到目前为止所拥有的:

server {
    listen 80;
    server_name $DOMAINS;

    location / {
        # redirect to named location
        #error_page 418 = @backend;
        #return 418; # doesn't work - error_page doesn't work after redirect

        try_files /nonexisting-file @backend;
    }

    location @backend {
        proxy_pass http://$BACKEND-IP;
        error_page 502 @handle_502; # Backend server down? Try to start it
    }

    location @handle_502 { # What to do when the backend server is not up
        # Ping our control server to start the …
Run Code Online (Sandbox Code Playgroud)

nginx failover

26
推荐指数
1
解决办法
6万
查看次数

如何强制 NGINX 加载新的静态文件?

我最近向一个网站推送了一个重大更新,但我遇到了一些人无法登录的问题,因为他们的浏览器正在加载旧的javascript 文件。我做过的一些事情包括:

  • 缓存破坏所有 javascript 文件
  • sendfile off在 nginx.conf 中设置
  • expires 1s在 mysite.conf 中设置
  • 显式设置 Cache-Control 标头: add_header Cache-Control no-cache;

下面是我的 nginx 配置文件。任何帮助将非常感激。

/etc/nginx/sites-enabled/mysite.conf

proxy_cache_path  /var/cache/nginx levels=1:2 keys_zone=one:8m max_size=3000m inactive=600m;

server {
    listen 80;
    server_name mysite.com;
    return 301 https://www.mysite.com$request_uri;
}

server {

        # listen for connections on all hostname/IP and at TCP port 80
        listen *:80;

        # name-based virtual hosting
        server_name www.mysite.com;

        # location of the web root for all static files (this should be changed for …
Run Code Online (Sandbox Code Playgroud)

nginx cache

26
推荐指数
4
解决办法
13万
查看次数

Nginx 日志条目到多个文件

我想将相同的 access.log 条目记录到单独的文件中,因此当请求进来时,它应该填充 a.log 和 b.log。有什么办法可以用 nginx 做到这一点吗?

nginx logging

26
推荐指数
1
解决办法
2万
查看次数

使用 PHP7 的 fastcgi_pass 权限被拒绝

我正在使用 PHP7.0 运行 LEMP。

我的服务器块中有这个

fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
Run Code Online (Sandbox Code Playgroud)

但是当我打开网站时,它返回一个 502 Bad Gateway。下面是错误日志。

*1 connect() to unix:/var/run/php/php7.0-fpm.sock failed (13: Permission denied) while connecting to upstream, client: xxx.xxx.xxx.xxx, server: example.com, request: "GET / HTTP1.1", upstream: "fsatcgi://unix:/var/run/php/php7.0-fpm.sock:", host: "example.com"
Run Code Online (Sandbox Code Playgroud)

它说Permission Denied。这里有什么问题?我已经检查过,但我似乎无法找到需要给予什么样的许可。

谢谢你。

php nginx php7

26
推荐指数
2
解决办法
6万
查看次数

如何让 nginx 通过重写转发 HTTP POST 请求?

我的 iOS 应用程序当前正在通过 http POST 访问域 A,但我想将所有请求转发到域 B。

如果我使用通常rewrite ^/(.*)$ http://mydomain/$1 permanent;的 POST 数据似乎会丢失。

如何使用 NginX 将 HTTP POST 数据传递到不同的域?

ubuntu nginx redirect

25
推荐指数
1
解决办法
10万
查看次数

在 nginx 代理中禁用 URL 解码

当我浏览到这个 URL 时:http://localhost:8080/foo/%5B-%5Dserver ( nc -l 8080) 按原样接收它:

GET /foo/%5B-%5D HTTP/1.1
Run Code Online (Sandbox Code Playgroud)

但是,当我通过 nginx (1.1.19) 代理此应用程序时:

location /foo {
        proxy_pass    http://localhost:8080/foo;
}
Run Code Online (Sandbox Code Playgroud)

通过 nginx 端口路由的相同请求转发路径解码:

GET /foo/[-] HTTP/1.1
Run Code Online (Sandbox Code Playgroud)

GET 路径中的解码方括号导致目标服务器中的错误(HTTP 状态 400 - 路径中的非法字符...),因为它们未转义到达。

有没有办法禁用 URL 解码或将其编码回来,以便目标服务器在通过 nginx 路由时获得完全相同的路径?一些巧妙的 URL 重写规则?

rewrite url nginx

25
推荐指数
2
解决办法
4万
查看次数

我应该为 dhparam.pem 设置哪些权限?

我正在为 nginx 的 SSL 配置中的ssl_dhparam指令生成 Diffie-Hellman 参数。

该文件dhparam.pem是使用命令创建的openssl dhparam 2048 -check -out dhparam.pem

我应该为这个文件设置哪些权限?在 git 存储库中共享是否安全还是应该将其保密?

ssl nginx openssl chmod

25
推荐指数
1
解决办法
4379
查看次数

在 nginx 配置中设置 ssl_prefer_server_ciphers 指令

这个问题是关于ssl_prefer_server_ciphers在配置 nginx 时设置正确的值。

根据 Mozilla 建议的一个相当典型的配置,该值应该是off(来源:https : //ssl-config.mozilla.org/#server=nginx&server-version=1.17.7&config=intermediate&openssl-version=1.0.1g)。

根据 nginx 自己的文档,应该始终将其设置为onhttps : //www.nginx.com/blog/nginx-https-101-ssl-basics-getting-started/(在文档中搜索ssl_prefer_server_ciphers)。

我不知道该遵循哪些建议。这两个来源都非常可靠。

一些行业专家能否就何时应该转off,以及何时转on?也很想知道原理。

ssl nginx

25
推荐指数
2
解决办法
7565
查看次数