Articles of nginx

如何在nginx日志中输出variables进行debugging

我正在testingnginx,并希望将variables输出到日志文件。 我该怎么做,哪个日志文件会去(访问或错误)。

IPv6上基于nginx名称的虚拟主机

我有一个nginx服务器,提供近六个不同的网站。 它运行在刚刚获得了IPv6本机支持(达拉斯数据中心)的Linode上,我正在尝试configuration大部分站点以实现双栈操作。 我得到了第一个使用仅IPv6的子域,如下所示: server { listen [::]:80 ipv6only=on; listen 80; server_name example.com ipv6.example.com; root /var/www/example.com/htdocs; #More stuff, including PHP, WordPress } 这很有用 – example.com仅用于IPv4(现在),ipv6.example.com仅用于IPv6(主要用于testing目的)。 我可以ping6 ipv6.example.com ,甚至wget ipv6.example.com没有打破汗水 – 这是wget ipv6.example.com愉快的痛苦(find了“窍门”之后,nginx绑定虚拟主机,需要ipv6only=on参数和双listen指令)。 不过,我现在试图扩展这个支持我的其他领域,从static.example.com开始; 当我采用与上面相同的方法时,虽然(双重listen指令,包括ipv6only=on参数),重新启动nginx时出现以下错误: * Starting Nginx Server… nginx: [emerg] a duplicate listen options for [::]:80 in /etc/nginx/sites-enabled/example.com.conf:3 似乎nginx的IPv6绑定方法不允许基于名称的虚拟主机? 我必须从我的主机获得额外的IPv6地址(没有问题),并使用IPv6上的基于IP的虚拟主机与基于命名的虚拟主机over IPv4? 还是我错过了一个解决scheme,将允许我的configuration在这两个堆栈上保持一致? 我希望我的网站能够在IPv6 世界大会上及时完成IPv6协议栈的工作,但是除非我能够快速清除这个问题,否则我可能还没准备好。 从实际的angular度来看,这并不是什么大不了的事 – […]

NGinx最佳实践

你在使用NGinx时使用了哪些最佳实践?

Nginx通过代理redirect,重写和保留URL

在Nginx中,我们一直试图redirect一个URL,如下所示: http://example.com/some/path -> http://192.168.1.24 用户仍然可以在浏览器中看到原始url。 一旦用户被redirect,说他们点击链接到/section/index.html ,我们希望这做一个请求,导致redirect http://example.com/some/path/section/index.html -> http://192.168.1.24/section/index.html 并再次保留原来的url。 我们的尝试涉及使用代理和重写规则的各种解决scheme,下面显示了使我们最接近解决scheme的configuration(请注意,这是example.com Web服务器的Web服务器configuration)。 但是,这仍然有两个问题: 它不会正确执行重写,因为Web服务器http://192.168.1.24收到的请求URL包含/some/path ,因此无法提供所需的页面。 一旦提供页面,当您将鼠标hover在链接上时,该URL中将缺less/some/path 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; } } 我们正在寻找一个解决scheme,只涉及到更改example.com上的Web服务器configuration。 我们可以改变192.168.1.24 (也是Nginx)上的configuration,但是我们想要避免这种情况,因为我们需要为通过example.com访问的数百个不同的服务器重复这个设置。

对于nginx而言,site-available与conf.d目录有什么不同的用法

我有一些使用Linux的经验,但没有使用nginx。 我负责研究应用程序服务器的负载平衡选项。 我用apt-get来安装nginx,一切似乎都很好。 我有几个问题。 站点可用文件夹和conf.d文件夹之间有什么区别? 这两个文件夹都包含在nginx的默认configuration设置中。 教程同时使用。 他们是什么,最好的做法是什么? 什么是用于启用网站的文件夹? 我如何使用它? 默认configuration引用了www-data用户? 我是否必须创build该用户? 如何给这个用户运行nginx的最佳权限?

你需要在nginx中单独的IPv4和IPv6监听指令吗?

我已经看到了在nginx上处理双栈IPv4和IPv6虚拟主机的各种configuration示例。 许多人认为这种模式: listen 80; listen [::]:80 ipv6only=on; 据我所知,这实现了完全一样的事情: listen [::]:80 ipv6only=off; 你为什么要用前者? 我能想到的唯一原因是,如果您需要每个协议特定的附加参数,例如,如果您只想在IPv4上设置deferred 。

连接()失败(111:连接被拒绝),同时连接到上游

访问目录中的PHP文件时遇到502 Gateway错误( http://example.com/dev/index.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" 我从来没有经历过这个。 什么是这种types的502 Gateway错误的解决scheme? 这是nginx.conf : user www-data; worker_processes 4; pid /var/run/nginx.pid; events { worker_connections 768; # multi_accept on; } http { ## # Basic […]

使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能够通过上游服务器的名字而不是主机上游服务器的名称?

如何重新启动nginx?

对我来说,我运行“killall nginx”并启动它“sbin / nginx”,任何人都有一个更好的重启脚本? BTW:我从源安装nginx,我找不到'service nginx'命令或/etc/init.d/nginx

在没有提供文件的情况下从Nginxconfiguration回复200

我已经configurationApache发送一个200响应,而不用这个configuration行服务任何文件 Redirect 200 /hello 我可以用Nginx做这个吗? 我不想提供一个文件,我只想让服务器响应一个200(我只是logging请求)。 我知道我可以添加一个索引文件并实现相同的function,但是在configuration文件中这意味着有一件事情可能会出错。