Questions tagged «nginx»

Nginx(“ eNgine x”)是一种轻量级的高性能HTTP服务器,反向代理,TCP流代理和邮件代理,在类似BSD的许可证下发布。

1
从一个Nginx重定向到另一个
我有两台带有NGINX的服务器(A和B)。服务器A在服务旧站点,服务器B在服务新站点。我已经更新了DNS,但速度很慢:在我的办公室中,我仍然看到旧站点: subdomain.site.com 如何将服务器A对该特定子域的所有请求重定向到服务器B? 现在它们都在NGINX中得到处理: server { listen 80; server_name subdomain.site.ru; root /var/www/subdomain/public; passenger_enabled on; }
10 nginx  redirect 

3
子文件夹中的Nginx项目
我对nginx的配置感到沮丧,因此我在编写配置文件以在同一根目录的子目录中为多个项目提供服务时寻求帮助。这不是虚拟主机,因为它们都使用相同的主机值。也许有一个例子可以阐明我的尝试: 请求192.168.1.1/应当成为index.php从/var/www/public/ 请求192.168.1.1/wiki/应当成为index.php从/var/www/wiki/public/ 请求192.168.1.1/blog/应当成为index.php从/var/www/blog/public/ 这些项目使用PHP并使用fastcgi。 我当前的配置非常小。 server { listen 80 default; server_name localhost; access_log /var/log/nginx/localhost.access.log; root /var/www; index index.php index.html; location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /var/www$fastcgi_script_name; include fastcgi_params; } } 我已经试过各种事情alias和rewrite,但没能得到的东西正确的FastCGI的设置。这似乎应该有比写位置的块,复制更雄辩的方式root,index,SCRIPT_FILENAME,等。 任何使我朝正确方向前进的指针都值得赞赏。
10 php  nginx  fastcgi 

2
了解linux和nginx的最大文件描述符,以及worker_rlimit_nofile的最佳值
我在nginx上收到了看似常见的“文件描述符过多”错误。经过大量搜索之后,解决方案显然是增加可供nginx使用的文件描述符的数量。但是没有足够的信息让我感到以有意义和安全的方式进行此操作。以下是大多数论坛/电子邮件主题涵盖的要点: 操作系统有其自己的总文件描述符限制(在我的系统上,cat /proc/sys/fs/file-max输出“ 100678”) 每个用户也可以有自己的限制(但在我的系统上,ulimit以任何用户输出“无限”的方式运行,请参阅底部的更新,以获取更多详细信息) 一些人按照此人说的话说了一些话:“指令worker_rlimit_nofile没有指定“多少”,而是操作系统限制。指令worker_rlimit_nofile仅允许以一种肮脏的方式扩大此限制(如果还不够的话)。因此,我想这暗示着为nginx OS用户设置限制而不是在配置中“更好”吗? 我可以抛出一个大于每个工人连接数的worker_rlimit_nofile值,并将其称为一天,但是我真的不知道这是怎么回事。 为什么每个工人的限制小于操作系统的限制? 我如何找出我现在的极限? 更新:对根和一个普通用户,输出的ulimit“无限制”,但ulimit -Hn和ulimit -Sn两个输出1024
10 linux  nginx  ulimit 

4
nginx + fastCGI + Django-在发送给客户端的响应中出现数据损坏
我正在使用FastCGI在nginx后面运行Django。我发现在发送给客户端的某些响应中,响应的中间发生了随机数据损坏(中间可能有数百个字节左右)。 在这一点上,我将其范围缩小为Nginx的FastCGI处理程序或Django的FastCGI处理程序中的错误(即,可能是flup中的错误),因为当我在独立(即runserver)模式下运行Django服务器时,永远不会发生此问题。它仅在FastCGI模式下发生。 其他有趣的趋势: 它倾向于在较大的响应上发生。客户端首次登录时,将向他们发送一堆1MB的块,以将其同步到服务器DB。第一次同步后,响应要小得多(通常一次只有几个KB)。损坏似乎总是发生在开始时发送的那些1MB数据块上。 当客户端通过LAN连接到服务器时(即低延迟,高带宽连接),这种情况会更经常发生。这使我认为Nginx或flup中存在某种竞争状况,而这种竞争状况会由于数据速率的提高而加剧。 现在,我不得不通过在响应头中放置一个额外的SHA1摘要来解决此问题,并让客户端拒绝响应头与主体校验和不匹配的响应,但这是一种可怕的解决方案。 是否有其他人经历过类似的事情,或者是否有任何指示如何确定是flup还是nginx在这里出了问题,所以我可以向相应的团队提交错误报告? 在此先感谢您的帮助。 注:我也张贴了类似的错误在lighttpd的FastCGI的+ + Django的一段时间回到这里:/programming/3714489/lighttpd-fastcgi-django-truncated-response-sent-to-client-due-to -意想不到的 ...即使这不是同一件事(截断还是损坏),它也开始看起来是罪魁祸首是flup / Django而不是Web服务器。 编辑:我还应该注意我的环境是: Mac Mini上的OSX 10.6.6 Python 2.6.1(系统) Django 1.3(来自官方tarball) flup 1.0.2(来自flup网站上的Python egg) nginx + SSL 1.0.0(来自Macports) 编辑:为响应Jerzyk的评论,汇编响应的代码路径如下所示(为简洁起见进行了编辑): # This returns an objc NSData object, which is an array.array # when pushed through the PyObjC bridge ret …

5
Nginx是否支持LDAP身份验证?
Nginx是否支持ldap身份验证?我刚刚从apache迁移,并希望将所有基于openldap和mod_auth_ldap的身份验证迁移到nginx。让我知道是否可行。 在此页面中,列出了nginx拥有的所有模块,但我没有提到LDAP。谢谢,
10 centos  nginx  ldap  openldap 

7
清漆-> Nginx-> Apache好主意?
我正在考虑新的Web服务器的体系结构。将Varnish作为Nginx前面的缓存作为反向代理,并在apache前面为所有繁重的工作提供静态文件是一个好主意吗? 我将在Rails应用程序上运行php和ruby。 将php请求通过其他两个过程传递给apache会产生太多开销吗? 非常感谢!

2
如何通过单个端口处理加密和未加密的HTTP连接
请看下图。 这应该如何工作? 当远程请求http:// myhost.com:8080/*时,应将请求转发到侦听回送接口端口8008的http服务器。这是简单的部分。 当远程用户请求http:// myhost.com:8080/specialurl ... 充当应用程序级别网关的程序应该能够将连接升级到加密的会话(无需更改端口) 与远程浏览器建立加密会话后,它应将请求转发到侦听回送接口端口8000的C程序。 我的问题是: 您是否曾经在生产环境中部署过这样的解决方案?如果你有... 您使用什么产品充当应用程序网关? 您能否提供一个配置示例? 硬限制: 我无法控制防火墙,并且我可以通过该端口将外部流量传入内部服务器的唯一端口是8080。该端口号无关紧要,问题是在防火墙级别只有一个开放的端口可以转发入站内部服务器的流量。 内部服务器必须正在运行Linux(当前正在运行Debian Lenny) 远程用户只需要使用当前的Web浏览器和Internet连接即可访问该服务器。这意味着此处不能通过SSH进行反向端口转发。 我需要一种已经在生产中经过测试并且可以轻松部署的产品。我不想开发自己的应用程序网关(如果是这种情况,我想我会在Stack Overflow上问这个问题,而不是在Server Fault上问这个问题)。 软限制: 我想避免将Apache用作应用程序网关(尽管如果这是唯一的选择,我愿意这样做) 如果可能,应用程序网关应该是成熟的开源软件产品。 到目前为止,产品已尝试作为应用程序网关(没有成功) Nginx的 lighttpd 磅 相关RFC RFC2817(... 说明了如何使用HTTP / 1.1中的升级机制通过现有的TCP连接来发起传输层安全性(TLS)。这允许不受保护的HTTP流量共享相同的知名端口。) RFC2818(... 描述了如何使用TLS来保护Internet上的HTTP连接。目前的做法是在SSL(TLS的前身)上对HTTP进行分层,通过使用不同的服务器端口来区分安全流量和不安全流量 ... )
10 linux  nginx  http  https  lighttpd 

6
如何从源代码升级安装的软件?
我从源代码安装NGinx,因为ubuntu存储库中的软件包很旧。我想知道升级这些类型的安装的最佳方法是什么? 我当前的工作流程涉及。 下载新资源 使用相同的路径安装软件。 重新启动软件。 有人告诉我这不是最好的路线。 有什么建议吗?
10 nginx  update  source 

2
NGINX SSL无法通过IPv6进行响应
在具有nginx的Debian服务器上,没有Web服务器通过HTTPS和IPv6做出响应。HTTP工作正常。 netstat报告端口443正在侦听IPv6地址 防火墙已打开,ipv6scanner.com报告端口443已打开 在本地(通过终端)wget和curl收到正确的响应,因此nginx配置正常 没有来自nginx error.log的错误迹象 失败时access.log中没有记录,因此通信可能未到达Web服务器 DNS很好。翻译有效,即使直接访问IP地址也无法建立连接 每次从“外部”(意味着在网络外部,从Internet)进行连接的尝试都将失败(Web浏览器,telnet,ipv6-test.com,curl ...)。完全没有回应。 可以在www.ekasparova.eu上对其进行测试。我无能为力。我还能检查什么? 编辑: 的输出traceroute6 --mtu www.google.com如下: traceroute to www.google.com (2a00:1450:4014:800::2004), 30 hops max, 65000 byte packets 1 * F=1500 * * 2 * * * ~ 30 * * * 所以它永远不会结束... 编辑2: 我的ip6tables-save输出(本地防火墙): # Generated by ip6tables-save v1.6.0 on Wed Oct …
10 nginx  ssl  ipv6 

1
php-fpm:帮助了解start_servers,min_spare_servers,max_spare_servers
我想调我的PHP-FPM安装我的服务器,我有麻烦搞清楚什么与做pm.start_servers,pm.min_spare_servers和pm.max_spare_servers变量。我在用pm = dynamic pm.max_children非常清楚。每个子进程一次服务1个Web客户端。好。那么,什么是“服务器”?显然,根据我的默认配置,一台服务器可以为1个以上的孩子提供服务。上限是多少?对于#个孩子/服务器,我应该如何使用经验法则?还是完全相关?在某个论坛上,有人声称服务器数量应为2 x CPU核心数量,但是我看到了推荐的配置,数量要高得多,为40-50。 PHP文档和许多“调整php-fpm”文章都没有帮助。
10 nginx  php  php-fpm 

2
Nginx代理的粘性会话
我有一个在两个不同的AWS实例上运行的应用程序,我想启用基于IP的“粘性”或“持久”会话,以便我可以通过特定方式利用Web套接字技术。 我有两个不同的设置,都涉及使用ip_hash来启用这些粘性会话。 在第一个设置中,应用程序进程与Nginx配置在同一实例上运行。这正在工作,会话将按预期进行。 upstream my_app { ip_hash; # local servers server 127.0.0.1:3001 weight=100 max_fails=5 fail_timeout=300; server 127.0.0.1:3002 weight=100 max_fails=5 fail_timeout=300; keepalive 8; } 在第二种设置中,我指向外部实例并尝试实现相同的效果。此设置无法正常工作。换句话说,会话仍在进行负载平衡。 upstream my_app { ip_hash; # external servers server 111.11.11.11:3001 weight=100 max_fails=5 fail_timeout=300; server 222.22.22.22:3002 weight=100 max_fails=5 fail_timeout=300; keepalive 8; } 我使用ip_hash正确吗?如何为外部服务器启用基于IP的“粘性”会话?

3
使用docker + nginx + php-fpm服务静态内容
我正在尝试使用docker配置php webapp。这个想法是php-fpm在一个独立的容器中运行应用程序,并让另一个容器运行nginx。此设置的想法是使用相同的nginx容器将请求代理到已经在同一台机器上运行的其他Web应用程序。问题是我无法nginx正确处理静态文件(js,css等),因为对那些文件的请求一直在进行fpm。 这是文件系统的样子: / ├── Makefile ├── config │ └── webapp.config └── webapp └── web ├── index.php └── static.js 我正在使用Makefile看起来像这样的整个东西(对此不感兴趣docker-compose): PWD:=$(shell pwd) CONFIG:='/config' WEBAPP:='/webapp' run: | run-network run-webapp run-nginx run-network: docker network create internal-net run-webapp: docker run --rm \ --name=webapp \ --net=internal-net \ --volume=$(PWD)$(WEBAPP):/var/www/webapp:ro \ -p 9000:9000 \ php:5.6.22-fpm-alpine run-nginx: …

2
10/20 / 40Gbps nginx大文件缓存Web服务器[达到20Gbps]
在此问题中,我想找到最好的配置/硬件,以从单个服务器提供40Gbps的速度。 情况 我们有一个视频共享代理服务器,可以从背后的慢速存储服务器上卸载峰值。所有流量仅是HTTP。服务器充当反向代理(未缓存在服务器上的文件)和Web服务器(存储在本地驱动器上的文件)。 当前大约有100TB的文件,并且在后端存储服务器上正在增长。 缓存机制是独立实现的,这个问题与缓存本身无关,因为它运行良好-当前提供14Gbps的速度,仅传递给2Gbps的后端服务器。因此缓存使用率很好。 目标 一台机器即可达到40Gbps甚至更高的吞吐量。 硬件1 硬件:Supermicro SC825,X11SSL-F,Xeon E3-1230v5(4C/8T@3.4GHz),16GB DDR4 RAM,2个Supermicro 10G STGN-i1S(LACP L3 + 4) 固态硬盘:1个512GB三星,2个500GB三星,2个480GB英特尔535、1个240GB英特尔S3500 系统: irqbalancer已停止 每个接口的set_irq_affinity(通过ixgbe驱动程序tarball中的脚本) ixgbe-4.3.15 I / O调度程序的截止日期 iptables为空(卸载模块) 文件系统:XFS Nginx: 发送文件关闭 AIO线程 指令1M tcp_nopush开启 tcp_nodelay在 如图所示,我们能够推动12.5Gbps。不幸的是,服务器没有响应。 有两件事引起了我的注意。第一个是大量的IRQ。在这种情况下,不幸的是我没有来自/ proc / interrupts的图表。第二件事是系统负载过高,我认为这是由于kswapd0仅在使用16G RAM时遇到问题。 硬件2 硬件:Supermicro SC119TQ,X10DRW-i,2个Xeon E5-2609v4(8C/8T@1.70GHz),128GB DDR4 RAM,2个Supermicro 10G STGN-i1S SSD,系统配置与硬件1相同。Nginx是sendfile上的文件(进一步比较aio / …

3
我该如何告诉SELinux在没有audit2allow的情况下允许nginx访问unix套接字?
我有Nginx通过位于的unix套接字将请求转发给gunicorn /run/gunicorn/socket。默认情况下,SELinux不允许这种行为: grep nginx /var/log/audit/audit.log type=SERVICE_START msg=audit(1454358912.455:5390): pid=1 uid=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:init_t:s0 msg='unit=nginx comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success' type=AVC msg=audit(1454360194.623:7324): avc: denied { write } for pid=9128 comm="nginx" name="socket" dev="tmpfs" ino=76151 scontext=system_u:system_r:httpd_t:s0 tcontext=system_u:object_r:httpd_sys_content_t:s0 tclass=sock_file type=SYSCALL msg=audit(1454360194.623:7324): arch=c000003e syscall=42 success=no exit=-13 a0=c a1=1f6fe58 a2=6e a3=7ffee1da5710 items=0 ppid=9127 pid=9128 auid=4294967295 uid=995 …
10 nginx  selinux 

2
Nginx:如何将主机标头设置为所选服务器(负载平衡)
我有一个站点可以用作负载平衡器。网站A。 我还有其他只能拥有一个域的站点。因此,如果我只是重定向到他们,它说找不到主机名。 因此,如果我手动将标题设置为某些内容,则仅显示该站点。 我如何设置proxy_set_header Host xxxx所选的服务器地址。这样,每个重新路由请求将具有不同且适当的主机头。 如果我的其他2个站点可以基于url而不是主机标头工作,那将不是问题。 worker_processes 1; error_log logs/error.log; error_log logs/error.log notice; error_log logs/error.log info; error_log logs/error.log debug; pid logs/nginx.pid; events { worker_connections 1024; } http { upstream myapp1 { #server localhost:3333; server www.asd.com:80; } server { listen 80; location / { proxy_set_header Host $upstream_addr; // should become …
10 nginx 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.