标签: nginx

在生产 Web 服务器上使用 NFS 是否合理?

假设连接是通过 LAN 1Gbe 或 10Gbe 连接,可以在生产服务器上合理地使用 NFS 作为将计算服务器连接到存储服务器的方法吗?

显然有一些网络开销,如果启用了同步模式,NFS 在写入时似乎特别慢。否则它看起来相当轻巧,并且能够根据我的说法进行扩展,但我个人对此几乎没有经验。我错了吗?

问题是我现在有一个服务器既充当存储服务器又充当 Web 服务器,但我最终可能在将来需要将两者分开,并考虑到某些请求需要通过 Web 应用程序层进行身份验证在初始化文件传输之前,这个软件有点棘手。网络 fs 挂载是我最简单的选择……不知道这是否合适。

我还计划尝试使用 NFS 的本地缓存,这应该可以大大提高性能,但我不确定这是否足够。

至于替代方案,我知道只有 iSCSI 是真正的竞争对手,而且大多数人似乎都推荐 NFS,而不是其他任何鲜为人知的产品。

performance storage nginx nfs web-server

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

Nginx:在位置指令中匹配服务器主机名

我有 nginx 在单个服务器指令下运行多个域

server {
        listen       80;
        server_name  www.domain.com;
        server_name  x.domain.com;
        server_name  y.domain.com;

----
----
----
}
Run Code Online (Sandbox Code Playgroud)

现在,我需要使用 location 指令来匹配子域并对其应用基本身份验证。相当于

location x.domain.com {
        auth_basic "Admin Login";
        auth_basic_user_file /etc/nginx/.htpasswd;
}
Run Code Online (Sandbox Code Playgroud)

我该怎么做呢?

nginx

24
推荐指数
4
解决办法
5万
查看次数

如何告诉 Nginx 在提供资产之前等待几秒钟?

因此,当我在我编写的应用程序中本地测试诸如 Ajax 之类的东西时,我经常喜欢使用sleep语句在服务器端脚本中添加延迟。它有助于模拟慢速连接等。

有没有办法直接在 Nginx 配置中指定类似的延迟行为,以适用于它所服务的平面 HTML 文件?

我知道您可以在网络级别进行类似的延迟模拟(请参阅此处),但它看起来很混乱,而且对我来说从来没有很好地工作过。

nginx

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

神秘的错误定向中文流量:如何找出 HTTP 请求使用的 DNS 服务器?

在过去的一周里,我从各种中国 IP 地址获得了大量流量。此流量似乎来自普通人,他们的 HTTP 请求表明他们认为我是:

  • Facebook
  • 海盗湾
  • 各种 BitTorrent 跟踪器,
  • 色情网站

所有这些听起来都像是人们会使用 VPN 做的事情。或者让中国长城生气的事情。

用户代理包括网络浏览器、Android、iOS、FBiOSSDK、Bittorrent。IP 地址是普通的中国商业提供商。

如果主机不正确或用户代理明显错误,我让 Nginx 返回 444:

## Deny illegal Host headers
if ($host !~* ^({{ www_domain }})$ ) {
   return 444;
}
## block bad agents
if ($http_user_agent ~* FBiOSSDK|ExchangeWebServices|Bittorrent) {
    return 444;
}
Run Code Online (Sandbox Code Playgroud)

我现在可以处理负载,但有一些高达 2k/分钟的突发。我想找出他们为什么来找我并阻止它。我们也有合法的 CN 流量,所以禁止 1/6 的地球不是一个选项。

它可能是恶意的甚至是个人的,但它可能只是那里配置错误的 DNS。

我的理论是它配置错误的 DNS 服务器或可能是人们用来绕过长城防火墙的某些 VPN 服务。

给定一个客户端 IP 地址:

183.36.131.137 - - [05/Jan/2015:04:44:12 -0500] "GET /announce?info_hash=%3E%F3%0B%907%7F%9D%E1%C1%CB%BAiF%D8C%DE%27vG%A9&peer_id=%2DSD0100%2D%96%8B%C0%3B%86n%8El%C5L%11%13&ip=183.36.131.137&port=11794&uploaded=4689970239&downloaded=4689970239&left=0&numwant=200&key=9085&compact=1 HTTP/1.0" 444 0 "-" "Bittorrent"
Run Code Online (Sandbox Code Playgroud)

我可以知道:

descr:          CHINANET Guangdong …
Run Code Online (Sandbox Code Playgroud)

vpn nginx china

24
推荐指数
2
解决办法
4182
查看次数

Nginx 禁用 .htaccess 和隐藏文件但允许 .well-known 目录

我有一个 Nginx 服务器,并禁用了隐藏文件 nginx_vhost.conf

## Disable .htaccess and other hidden files
    location ~ /\. {
        deny all;
        access_log off;
        log_not_found off;
    }
Run Code Online (Sandbox Code Playgroud)

但是 LetsEncrypt 需要访问该 .well-known目录。

如何允许.well-known目录并拒绝其他隐藏文件?

nginx virtualhost lets-encrypt

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

nginx 工作进程数

我正在设置 nginx 以提供 Drupal 安装服务,但我似乎发现有关 nginx 工作进程设置的信息存在冲突。一个站点说你需要两个,一个说你需要五个,一个说每个处理器一个......

我应该如何选择 nginx 工作进程的数量?如果它有所作为,那么它就是 VMWare 集群上的一个来宾 VM,我已经给了它一个虚拟处理器。

nginx web-server

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

nginx + PHP-FPM = nginx 日志中的“权限被拒绝”错误 13;配置错误?

我在一台 RHEL5 服务器上的 PHP 5.2.10 下运行了 nginx 0.7x + PHP-FPM,但试图在第二台服务器上的 PHP 5.3.3 中的捆绑 PHP-FPM 下复制该设置,我有每次有 GET 时都会遇到权限错误的问题。

FPM启动了,确认fastcgi在9000上监听,但是每次做GET的时候,在nginx日志中看到这个错误:

2010/08/12 23:38:53 [crit] 5019#0: *5 stat() "/home/noisepages/www/" failed (13: Permission denied), client: 24.215.173.141, server: dev.noisepages.com, request: "GET / HTTP/1.1", host: "dev.noisepages.com"
Run Code Online (Sandbox Code Playgroud)

Barebones nginx.conf.default 至少可以工作。这是我的 nginx.conf

server {
        listen       80;
        server_name  dev.noisepages.com;
        root   /home/noisepages/www;
        index  index.html index.htm index.php;

        access_log  logs/dev.access.log;
 error_log logs/dev.error.log;

        location / {

 if (-f $request_filename) {
  expires 30d;
  break;
  }

 # this sends all non-existing file or directory requests to …
Run Code Online (Sandbox Code Playgroud)

rewrite nginx fastcgi php5 php-fpm

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

Nginx proxy_read_timeout 与 proxy_connect_timeout

我已经开始使用 Nginx 作为一组提供某种服务的服务器的反向代理。

该服务有时可能相当慢(它在 Java 上运行,而 JVM 有时会陷入“完全垃圾收集”,这可能需要几秒钟),所以我将 设置proxy_connect_timeout为 2 秒,这将使 Nginx 有足够的时间来计算出服务卡在 GC 上并且不会及时响应,它应该将请求传递到不同的服务器。

proxy_read_timeout如果服务本身需要太多时间来计算响应,我还设置了防止反向代理卡住 - 同样,它应该将请求移动到另一个应该足够空闲以返回及时响应的服务器。

我已经运行了一些基准测试,我可以清楚地看到,proxy_connect_timeout由于某些请求完全在为连接超时指定的时间返回,因此工作正常,因为服务卡住并且不接受传入连接(该服务使用 Jetty 作为嵌入式servlet 容器)。这proxy_read_timeout也有效,因为我可以看到在那里指定的超时后返回的请求。

问题是proxy_read_timeout + proxy_connect_timeout,如果服务被卡住并且在 Nginx 尝试访问它时不接受连接,但在 Nginx 可以超时之前 - 它被释放并开始处理,但速度太慢,Nginx 会因为读取超时而中止。我相信该服务有这样的情况,但是在运行了几个基准测试之后,总共有数百万个请求 - 我没有看到一个请求在上面的任何内容中返回proxy_read_timeout(这是更大的超时)。

我很感激对此问题的任何评论,尽管我认为这可能是由于 Nginx 中的错误(我还没有查看代码,所以这只是一个假设)连接后超时计数器不会重置如果 Nginx 没有从上游服务器读取任何内容,则成功。

nginx proxy timeout

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

为什么 sub_filter 与 proxy_pass 一起使用时似乎不起作用?

鉴于nginx的以下配置:

server {
    listen  80;
    server_name apilocal;
    sub_filter  "apiupstream/api" "apilocal";
    sub_filter_once off;
    location /people/ {
            proxy_pass  http://apiupstream/api/people/;
            proxy_set_header Accept-Encoding "";
    }
}
Run Code Online (Sandbox Code Playgroud)

Sub_filter 没有正确响应响应的一部分。从配置中删除 proxy_pass 后,它就可以正常工作。很多遇到这个问题的人最终都会从上游服务器获得 gzip 压缩。我已经验证我的上游服务器没有为其响应打开 gzip 编码。但为了以防万一,我还使用了上面的 proxy_set_header 来不接受 gzip。

是否还有其他我想念的东西?

nginx proxy

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

nginx 连接超时和客户端关闭连接问题

我在 AWS 上运行了这台 nginx 服务器,直到最近,当几个用户开始抱怨该网站在尝试访问 10 次后才打开,它一直运行良好。

我从来没有能够从我身边重现这个问题。我正在使用 google 的 dns,即 8.8.8.8,当我为其中一个用户更改相同的 dns 时,该站点运行良好。现在这可能是原因,也可能只是巧合。

我在错误日志中发现了这个 -

2014/05/29 13:46:15 [info] 6940#0: *150649 client timed out (110: Connection timed out) while waiting for request, client: xx.xxx.xxx.xx, server: 0.0.0.0:80
2014/05/29 13:46:20 [info] 6940#0: *150670 client closed connection while waiting for request, client: xx.xxx.xxx.xx, server: 0.0.0.0:80
2014/05/29 13:46:20 [info] 6940#0: *150653 client closed connection while waiting for request, client: xx.xxx.xxx.xx, server: 0.0.0.0:80
2014/05/29 13:46:20 [info] 6940#0: *150652 client closed connection while waiting for request, …
Run Code Online (Sandbox Code Playgroud)

nginx timeout keepalive

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