Questions tagged «nginx»

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

6
如何重启nginx?
对我来说,我运行“ killall nginx”并通过“ sbin / nginx”启动它,有人有更好的重启脚本吗? 顺便说一句:我从源代码安装nginx,我找不到'service nginx'命令或/etc/init.d/nginx
95 nginx  redhat 

7
使nginx在反向代理时传递上游的主机名
我使用主机名运行几个Docker容器: web1.local web2.local web3.local 这些路由由nginx根据主机名完成。我在此设置之前(在连接到互联网的另一台计算机上)有一个代理,在其中我将上游定义为: upstream main { server web1.local:80; server web2.local:80; server web3.local:80; } 以及实际的虚拟主机说明: server { listen 80; server_name example.com; location / { proxy_pass http://main; } } 现在,由于容器收到的主机名是“ main”而不是“ web1.local”,因此它们无法正确响应请求。 问题:代理请求时,如何告诉nginx在Host:标头中传递上游服务器的名称而不是上游服务器组的名称?

5
使用Nginx提供静态文件时禁用缓存(用于开发)
我们正在使用Nginx在开发平台上提供静态文件。由于它是一个开发平台,因此我们希望禁用缓存,以便将每个更改都传播到服务器。VHost的配置非常简单: server { server_name static.server.local; root /var/www/static; ## Default location location / { access_log off; expires 0; add_header Cache-Control private; } } 当我们访问HTML文件(HTTP://static.server.local/test.html),我们没有任何问题:服务器返回一个代码304未修改只要该文件没有改变,和200 OK与响应更改文件后的修改文件。 但是,它与Javascript或CSS文件的行为似乎有所不同。更改文件后,我们将收到200 OK预期的响应,但带有旧文本。 Nginx中是否有内部缓存机制可以解释这种行为?还是我们应该添加的一些配置? 附带说明一下,这是修改文件后Nginx返回的标头(似乎正确): Accept-Ranges:bytes Cache-Control:max-age=0 private Connection:keep-alive Content-Length:309 Content-Type:text/css Date:Fri, 13 May 2011 14:13:13 GMT Expires:Fri, 13 May 2011 14:13:13 GMT Last-Modified:Fri, 13 May 2011 …

7
连接到上游时connect()失败(111:连接被拒绝)
502 Gateway访问目录(http://example.com/dev/index.php)中的PHP文件时遇到错误。日志只是这么说: 2011/09/30 23:47:54 [error] 31160#0: *35 connect() failed (111: Connection refused) while connecting to upstream, client: xx.xx.xx.xx, server: domain.com, request: "GET /dev/ HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "domain.com" 我以前从未经历过。此类502 Gateway错误的解决方案是什么? 这是nginx.conf: user www-data; worker_processes 4; pid /var/run/nginx.pid; events { worker_connections 768; # multi_accept on; } http { ## # Basic …
85 nginx  502-error 



14
在stderr中发送的Nginx 1 FastCGI:“主要脚本未知”
我第一次使用Nginx,但是我对Apache和Linux的了解不止于此。我正在使用一个现有项目,并且每当尝试查看index.php时,都找不到404文件。 这是access.log条目: 2013/06/19 16:23:23 [error] 2216#0: *1 FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "GET /index.php HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "www.ordercloud.lh" 这是网站可用的文件: server { set $host_path "/home/willem/git/console/www"; access_log /www/logs/console-access.log main; server_name console.ordercloud; root $host_path/htdocs; set $yii_bootstrap "index.php"; charset utf-8; …
81 nginx  php-fpm 

8
我可以隐藏所有服务器/操作系统信息吗?
我不希望任何人能够从互联网上检测到我正在使用NGINX甚至是Ubuntu。有一些工具(例如BuiltWith)可以扫描服务器以检测它们正在使用的工具。另外,某些破解工具可能会有助于检测。我能从外面隐藏所有这些信息的最好/最接近的是什么?
78 nginx  ubuntu 

4
如何使用Nginx proxy_pass删除路径
我在拥有一个正在运行的Web应用程序http://example.com/,并且想在上的单独服务器上“挂载”另一个应用程序http://example.com/en。上游服务器proxy_pass似乎可以运行,但是有一个问题: upstream luscious { server lixxxx.members.linode.com:9001; } server { root /var/www/example.com/current/public/; server_name example.com; location /en { proxy_pass http://luscious; } } 打开时example.com/en,我的上游应用程序返回404 not found /en。这是有道理的,因为上游没有路径/en。 是proxy_path正确的解决方案?我应该重写“上游”,以便它/en代替它作为根路径吗?还是有一条指令允许我重写传递到上游的路径?
77 nginx  path  proxypass 


2
try_files如何工作?
我看了看nginx文档,它仍然使我完全困惑。 try_files工作如何?文档说明如下: 从NginxHttpCoreModule try_files 语法:try_files path1 [path2] uri 默认值:无 上下文:服务器,位置 可用性:0.7.27 按顺序检查文件是否存在,并返回找到的第一个文件。后面的斜杠表示目录-$ uri /。如果找不到文件,则调用内部重定向到最后一个参数。最后一个参数是后备URI,并且 必须存在,否则将引发内部错误。与重写不同,如果后备不是命名位置,则不会自动保留$ args。如果需要保留args,则必须明确地这样做: 我不明白它如何检查路径,如果我不希望出现内部错误,却又恢复了路径的其余部分以查找另一个文件该怎么办? 如果我想尝试一个缓存的文件,/path/app/cache/url/index.html如果尝试失败,/path/app/index.php该怎么写?如果我写了: try_files /path/app/cache/ $uri include /etc/nginx/fastcgi_params; fastcgi_pass unix:/var/run/php-fastcgi/php-fastcgi.socket; fastcgi_param SCRIPT_FILENAME $document_root/index.php; 我有index index.php index.html index.htm;。当我访问/urlname,它会尝试检查/path/app/cache/urlname/index.php然后/path/app/cache/urlname/index.html?如果我们之后忽略所有内容,try_files是否可以try_files检查缓存文件夹?我一直在尝试,但失败了。
72 nginx 

4
您是否需要在Nginx中使用单独的IPv4和IPv6监听指令?
我已经看到了用于在nginx上处理双栈IPv4和IPv6虚拟主机的各种配置示例。许多人建议这种模式: listen 80; listen [::]:80 ipv6only=on; 据我所知,这实现了与以下功能完全相同的功能: listen [::]:80 ipv6only=off; 为什么要使用前者?我能想到的唯一原因是,您是否需要特定于每种协议的其他参数,例如,如果您只想deferred在IPv4上进行设置。
71 nginx  ipv6  ipv4 

4
通过代理,重写和保留URL进行Nginx重定向
在Nginx中,我们一直在尝试重定向URL,如下所示: http://example.com/some/path -> http://192.168.1.24 用户仍在浏览器中看到原始URL的位置。重定向用户后,说他们单击了的链接/section/index.html,我们希望它发出一个导致重定向的请求 http://example.com/some/path/section/index.html -> http://192.168.1.24/section/index.html 并仍然保留原始网址。 我们的尝试涉及使用代理和重写规则的各种解决方案,下面显示了使我们最接近解决方案的配置(请注意,这是Web服务器的Web服务器配置example.com)。但是,这仍然存在两个问题: 它无法正确执行重写,因为Web服务器收到的请求URL http://192.168.1.24包含了该URL /some/path,因此无法提供所需的页面。 网页投放后,当您将鼠标悬停在链接上时,/some/pathURL丢失 server { listen 80; server_name www.example.com; location /some/path/ { proxy_pass http://192.168.1.24; proxy_redirect http://www.example.com/some/path http://192.168.1.24; proxy_set_header Host $host; } location / { index index.html; root /var/www/example.com/htdocs; } } 我们正在寻找一种仅涉及更改上的Web服务器配置的解决方案example.com。我们可以更改192.168.1.24(也可以是Nginx)上的配置,但是我们想尝试避免这种情况,因为我们将需要对数百个通过访问进行代理的不同服务器重复此设置example.com。

6
正确设置https的“默认” nginx服务器
我有几台服务器在同一台计算机上运行,​​有些服务器仅使用http,有些服务器同时使用http和https。在主配置文件中包含的单独文件中定义了几个服务器块。 我为http设置了一个“默认”服务器,该服务器将为通用的“维护页面”提供服务,以与其他配置文件中的任何其他server_name不匹配的请求。http默认服务器按预期工作,它使用server_name“ _”,并且它首先出现在包含列表中(因为我观察到,如果在服务器之间有重复的server_names,则使用出现的第一个)。这很好。 我希望有相同的服务器块(仅将“ listen 80 default_server”切换为“ listen 443 default_server”,而不是服务页面“ return 444”),但事实并非如此。取而代之的是,尽管其他服务器块对传入的请求具有更合适的server_name,但新的默认https服务器似乎实际上正在捕获所有传入的https连接并导致它们失败。删除新的默认https服务器将导致恢复半正确的行为:带有https的网站将全部正确加载;但没有https的网站将全部路由到包含文件中的第一个https服务器(根据文档,如果未显示“ default_server”,则出现的第一个服务器块将为“ default”)。 所以我的问题是,在Nginx中为SSL连接定义“默认服务器”的正确方法是什么?为什么当我显式设置“ default_server”时,它会变得贪婪并获取所有连接,而当我隐式地让nginx决定“ default server”时,它会像我期望的那样工作(将错误的服务器设置为default,其他真实服务器行为正确)? 这是我的“默认服务器”。Http的工作方式不会破坏其他服务器。Https破坏其他服务器并消耗所有服务器。 server { listen 443 ssl default_server; server_name _; access_log /var/log/nginx/maintenance.access.log; error_log /var/log/nginx/maintenance.error.log error; return 444; } server { listen *:80 default_server; server_name _; charset utf-8; access_log /var/log/nginx/maintenance.access.log; error_log /var/log/nginx/maintenance.error.log error; root …
70 ssl  https  nginx 

6
此nginx错误“重写或内部重定向周期”是什么意思?
tail -f /var/log/nginx/error.log 2013/05/04 23:43:35 [error] 733#0: *3662 rewrite or internal redirection cycle while internally redirecting to "/index.html", client: 127.0.0.1, server: _, request: "GET /robots.txt HTTP/1.1", host: "kowol.mysite.net" HTTP/1.1", host: "www.joesfitness.net" 2013/05/05 00:49:14 [error] 733#0: *3783 rewrite or internal redirection cycle while internally redirecting to "/index.html", client: 127.0.0.1, server: _, …
67 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.