标签: nginx

Apache基准测试的替代品?

我想要一些适用于 ubuntu 的工具,可以用来测试我的服务器,它可以处理多少。

有什么建议?我以前使用过 apache 基准测试,但我想尝试其他方法。

(作为一个附带问题,如果我只使用 nginx,apache 基准测试是否有效?)

ubuntu nginx apache-2.2 benchmark

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

Nginx 上的通配符虚拟主机

我刚刚在我的服务器上安装了 Nginx 并且对结果非常满意,但是我仍然不知道如何插入通配符虚拟主机。

这是我想要的 [目录] 结构:

-- public_html (example.com)
---subdoamin 1 (x.example.com)
---subdomain 2 (y.example.com)
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,这是非常基本的,但是,我希望能够通过简单地为新子域添加 A 记录来添加域,该记录将立即指向 public_html 下的同名子目录。

网上有很多东西,但我还没有遇到过完全这样的东西。

任何帮助将不胜感激。

nginx wildcard subdomain virtualhost

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

Nginx 代理域到另一个域,无需更改 URL

我的问题是主题。我有一个域,这是它的 nginx 配置:

server {
listen 80;
server_name connect3.domain.ru www.connect3.domain.ru;

access_log /var/log/nginx/connect3.domain.ru.access.log;
error_log /var/log/nginx/connect3.domain.ru.error.log;

root /home/httpd/vhosts/html;
index index.html index.htm index.php;

location ~* \.(avi|bin|bmp|css|dmg|doc|docx|dpkg|exe|flv|gif|htm|html|ico|ics|img|jpeg|jpg|js|m2a|m2v|mov|mp3|mp4|mpeg|mpg|msi|pdf|pkg|png|pps|ppt|pptx|ps|rar|rss|rtf|swf|tif|tiff|txt|wmv|xhtml|xls|xml|zip)$ {
    root /home/httpd/vhosts/html;
    access_log off;
    expires 1d;
}

location ~ /\.(git|ht|svn) {
    deny all;
}

location / {
    #rewrite ^ http://connect2.domain.ru/;
    proxy_pass http://127.0.0.1:8080/;
    proxy_redirect off;
    proxy_hide_header "Cache-Control";
    add_header Cache-Control "no-store, no-cache, must-revalidate, post-check=0, pre-check=0";
    proxy_hide_header "Pragma";
    add_header Pragma "no-cache";
    expires -1;
    add_header Last-Modified $sent_http_Expires;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
Run Code Online (Sandbox Code Playgroud)

我需要将connect3.domain.ru 主机代理到connect2.domain.ru,但浏览器地址栏中的URL …

nginx proxypass

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

需要将 nginx 吞吐量增加到上游 unix 套接字——Linux 内核调整?

我正在运行一个 nginx 服务器,它充当上游 unix 套接字的代理,如下所示:

upstream app_server {
        server unix:/tmp/app.sock fail_timeout=0;
}

server {
        listen ###.###.###.###;
        server_name whatever.server;
        root /web/root;

        try_files $uri @app;
        location @app {
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Forwarded-Proto $scheme;
                proxy_set_header Host $http_host;
                proxy_redirect off;
                proxy_pass http://app_server;
        }
}
Run Code Online (Sandbox Code Playgroud)

一些应用服务器进程反过来在请求/tmp/app.sock可用时将其拉出。此处使用的特定应用服务器是 Unicorn,但我认为这与此问题无关。

问题是,似乎超过一定量的负载后,nginx 无法以足够快的速度通过套接字获取请求。我设置了多少个应用服务器进程并不重要。

我在 nginx 错误日志中收到了大量这些消息:

connect() to unix:/tmp/app.sock failed (11: Resource temporarily unavailable) while connecting to upstream
Run Code Online (Sandbox Code Playgroud)

许多请求会导致状态代码 502,以及那些不需要很长时间才能完成的请求。nginx 写入队列统计数据徘徊在 1000 左右。

无论如何,我觉得我在这里遗漏了一些明显的东西,因为 nginx 和应用程序服务器的这种特殊配置非常普遍,尤其是对于 Unicorn(实际上这是推荐的方法)。是否有任何需要设置的 linux 内核选项,或者 nginx 中的某些内容?关于如何增加上游套接字的吞吐量的任何想法?我显然做错了什么?

关于环境的其他信息:

$ uname -a
Linux …
Run Code Online (Sandbox Code Playgroud)

linux tuning nginx socket unicorn

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

50* 页面的 Nginx add_header

我目前正在尝试让 nginx 在发送某种 50* 错误时向响应添加标头。我已经在 http 块上有一个 add_header 指令,除了它似乎是错误之外,所有请求都会得到尊重。我还在其中一个 vhost 中尝试了以下操作:

location /mediocregopheristhecoolest {
    add_header X-Test "blahblahblah";
    return 502;                                                                                                    
}       
Run Code Online (Sandbox Code Playgroud)

转到该页面会给我一个 502,但没有标题。这只是 nginx 不做的事情,还是我做错了?

nginx http-headers 500-error

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

防止默认服务器的最佳方法?

我有许多虚拟主机,我想通过空白页、错误页面或通常最有效地使用 Nginx 资源的任何方式“关闭”默认虚拟主机,同时只允许其他虚拟主机通过预定义的域。

nginx virtualhost

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

反向代理 - 删除子目录

在不久的将来,我将拥有 3 个 nginx 服务器。一个是其他两个的 SSL 反向代理。所以,例如,我去:

https://www.mysitename.com/site1
Run Code Online (Sandbox Code Playgroud)

本示例中的另外两个服务器是 site1 和 site2。我在代理上安装了 SSL 证书,我想使用反向代理(不需要 SSL,因为所有 3 个都在内部网络上)。出于测试目的,我让 nginx 在 443 上监听 SSL/反向代理,请监听端口 8081 是用于站点 1 的 Rails 应用程序,而 8082 用于站点 2。

我有这个...

server {
    listen                  443;
    server_name             mysitename.com;

    ssl                     on;
    ssl_certificate         ssl/mysitename.com.crt;
    ssl_certificate_key     ssl/mysitename.com.key;
    keepalive_timeout       60;

    location /site1 {
        proxy_pass http://localhost:8081;
        proxy_set_header    Host            $host;
        proxy_set_header    X-Real-IP       $remote_addr;
        proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_redirect http:// https://;
    }

    location /site2 {
        proxy_pass http://localhost:8082;
        proxy_set_header    Host            $host;
        proxy_set_header    X-Real-IP       $remote_addr;
        proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_redirect http:// …
Run Code Online (Sandbox Code Playgroud)

nginx

29
推荐指数
1
解决办法
4万
查看次数

在 NGINX 中禁用 TLS 1.0

我有一个 NGINX 作为我们网站的反向代理,并且运行良好。对于需要 ssl 的站点,我关注raymii.org以确保拥有尽可能高的 SSLLabs 分数。其中一个站点需要符合 PCI DSS,但基于最新的 TrustWave 扫描,由于启用了 TLS 1.0,现在失败。

在 nginx.conf 中的 http 级别我有:

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
Run Code Online (Sandbox Code Playgroud)

对于特定的服务器,我有:

ssl_protocols TLSv1.1 TLSv1.2;
Run Code Online (Sandbox Code Playgroud)

我已经更改了密码,将内容从 http 级别移到了每个 ssl 站点服务器,但无论何时运行:

openssl s_client -connect www.example.com:443 -tls1
Run Code Online (Sandbox Code Playgroud)

我获得了 TLS 1.0 的有效连接。SSLLabs 将站点的 nginx 设置作为A但使用 TLS 1.0,所以我相信我的其余设置是正确的,它只是不会关闭 TLS 1.0。

关于我可能会错过什么的想法?

openssl version -a
OpenSSL 1.0.1f 6 Jan 2014
built on: Thu Jun 11 15:28:12 UTC 2015
platform: debian-amd64

nginx -v
nginx version: nginx/1.8.0
Run Code Online (Sandbox Code Playgroud)

nginx pci-dss tls

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

位置路径中的 Nginx 通配符/正则表达式

我的 Nginx 配置抛出 404.php如下:

## Any other attempt to access PHP files returns a 404.
location ~* ^.+\.php$ {
    return 404;
}
Run Code Online (Sandbox Code Playgroud)

但是,我要运行的子文件夹中有一些 index.php 文件。当前的配置是这样的:

location = /sitename/subpage/index.php {
    fastcgi_pass phpcgi; #where phpcgi is defined to serve the php files
}

location = /sitename/subpage2/index.php {
    fastcgi_pass phpcgi; 
}

location = /sitename/subpage3/index.php {
    fastcgi_pass phpcgi; 
}
Run Code Online (Sandbox Code Playgroud)

它工作得很好,但问题是重复的位置,如果有很多子页面,那么配置就会变得很大。

我尝试了像 * 和一些正则表达式这样的通配符,它​​表示 nginx 测试通过但没有加载页面,即 404。我尝试的是:

location = /sitename/*/index.php {
    fastcgi_pass phpcgi;
}

location ~* ^/sitename/[a-z]/index.php$ {
    fastcgi_pass phpcgi;
}
Run Code Online (Sandbox Code Playgroud)

有什么办法可以在该位置使用一些路径名作为正则表达式或通配符?

nginx regex wildcard

29
推荐指数
1
解决办法
16万
查看次数

如何让 nginx 支持 @font-face 格式并允许 access-control-allow-origin?

我已将这些规则添加到mime.types

application/x-font-ttf                ttf;
font/opentype                         otf;
application/vnd.ms-fontobject         eot;
font/x-woff                           woff;
Run Code Online (Sandbox Code Playgroud)

现在,每一个都正确设置了 Content-Type 标头。我现在唯一的问题是 Firefox 需要 Access-Control-Allow-Origin。我用谷歌搜索了这个答案并将其添加到我的服务器指令中:

location ~* \.(eot|ttf|woff)$ {
    add_header Access-Control-Allow-Origin *;
}
Run Code Online (Sandbox Code Playgroud)

但现在我的字体根本没有提供。

相反,error.log报告说它试图在本地文件系统上打开它们..

2010/10/02 22:20:21 [error] 1641#0: *15 open() "/usr/local/nginx/html/fonts/mgopenmodernabold-webfont.woff" 失败 (2: 没有那个文件或目录) ,客户端:69.164.216.142,服务器:static.arounds.org,请求:“HEAD /fonts/mgopenmodernabold-webfont.woff HTTP/1.1”,主机:“static.arounds.org”

任何想法可能与语法有关?我是否需要明确添加一条规则,说不要尝试在本地打开它或什么?

编辑:我认为问题是我现在服务于 2 个不同的地点。而不是我应该在主要的内部进行正则表达式检查,然后提供标题。

nginx http-headers

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