Articles of nginx

Nginx,代理传递给Apache和SSL

我有Nginx和Apache设置Nginx的代理服务器 – 除了静态资源之外,一切都传给了Apache。 我有一个服务器设置为端口80,如下所示: server { listen 80; server_name *.example1.com *.example2.com; […] location ~* \.(?:ico|css|js|gif|jpe?g|png|pdf|te?xt)$ { access_log off; expires max; add_header Pragma public; add_header Cache-Control "public, must-revalidate, proxy-revalidate"; add_header Vary: Accept-Encoding; } location / { proxy_pass http://127.0.0.1:8080; include /etc/nginx/conf.d/proxy.conf; } } 而且,由于我们有多个SSL站点(不同的SSL证书),我有一个server{}块为他们每个像这样: server { listen 443 ssl; server_name *.example1.com; […] location ~* \.(?:ico|css|js|gif|jpe?g|png|pdf|te?xt)$ { access_log […]

在Apache,Nginx和AWS ELB之间设置REMOTE_ADDR的奇怪行为

我遇到了一个奇怪的问题,并且好奇别人是否也遇到了这个问题。 如果有绝对的事情可以做的话 我们有一个安装在ELB后面的多台AWS EC2 Linux机器。 EC2机器正在运行Nginx。 我们把它们称为我的生产机器(因为它们是!) 我也有一个运行Apache的Rackspace云计算机。 完全分开。 我们称之为testing服务器。 现在,新加坡有一家ISP似乎在通过透明代理或其他途径来收集stream量,而当你进行IP检查时,IP往往会发生变化。 事实上,我注意到,当我检查http://www.whatismyip.com,IP似乎是稳定的(不会改变)在刷新。 但是,在清爽的情况下,IP的变化! (所以我的ISP做奇怪的东西)。 现在,回到我的设置,我注意到了一些事情: 连接到单个Nginx生产计算机(绕过负载均衡器)时,检查来自PHP的REMOTE_ADDRvariables,将被设置为可更改的稳定IP。 连接到testingApache服务器时,从PHP检查REMOTE_ADDRvariables,将其设置为在刷新时发生更改的IP。 通过ELB连接到nginx生产机器时检查标题,ELB将HTTP_X_FORWARDED_FOR设置为稳定的IP。 有没有人遇到这种奇怪的行为? 我能做什么吗? 我应该“信任”哪个IP? (Apache给出的一个,还是ELB和Nginx给出的一个?) 谢谢! 克里斯

用nginx检查和读取cookies

我找不到有关如何使用nginxpipe理cookie的信息 我已经看到,两个variables是cookie的亲属,即$ http_cookies和$ cookie_COOKIENAME。 无论如何,我绝对不知道如何用nginx读取cookie。 例如,如果一个具有特殊值的cookie存在,我想返回一个403,我试过了,但是这似乎不起作用: if ($cookie_mycookiename = "509fd1e420bba") { return 403; } 也尝试使用$ http_cookie if ($http_cookie = "509fd1e420bba") { return 403; } 我真的不明白nginx如何处理cookie … 编辑这里是我的完整的nginxconfiguration server { listen 80; root /home/minou/vids/; index index.html index.htm; #server_name localhost; location / { # First attempt to serve request as file, then # as directory, then fall […]

Nginx检查HttpGzipModule

我有我的VPS nginx +乘客,但我想我没有安装HttpGzipModule,有两个问题: 如何validation是否安装? 如何安装,我要再次安装nginx吗? 有没有一个新手遵循的程序?

NGINX“密码”保护目录

我有一个nginx服务器。 我想要在线提供目录,但只有在提供了某个密码的情况下。 这样做会不好做: location /password=mysuperstrongpassword { root /mydir } 有没有更好的方法来完成这个? 沿着同样的路线,有人可以指导我如何编写一个脚本,每周创build一个新的密码,重写这个页面,并通过电子邮件发送给我新的密码? 谢谢!

nginx负载均衡器重写监听端口

我已经使用nginx实现了负载均衡器,如下所示: 上游lb_units { 服务器127.0.0.1:88权重= 7 max_fails = 3 fail_timeout = 30s; #反向代理到BES1 服务器10.200.200.107 weight = 1 max_fails = 3 fail_timeout = 30s; #反向代理到BES2 服务器10.200.200.94 weight = 1 max_fails = 3 fail_timeout = 30s; #反向代理到BES2 } 服务器{ 听80; server_name mysite.com; 位置 / { proxy_set_header X-Real-IP $ remote_addr; proxy_set_header X-Forwarded-For $ proxy_add_x_forwarded_for; proxy_set_header主机$主机; proxy_pass http:// lb_units; proxy_redirectclosures; […]

如何将1and1域指向no-ip主机名

我有一个使用Nginx托pipe几个虚拟域的Linux服务器。 我的ISP提供了一个dynamic的IP,我试图避免支付额外的静态IP。 我正在试验从1and1购买的域名。 如果我input我的服务器的当前IP地址作为1and1域的Alogging,一切正常(但当然,当我的ISP更改我的IP地址是不可接受的,我将不得不手动更新Alogging)。我创build了一个主机名没有IP会自动更新我的IP地址。 如果我configuration我的1and1域使用框架redirect到我的no-ip主机名,我失去了我的域名,以便浏览器显示我的服务器的普通欢迎页面而不是虚拟域索引页面。 所以,我的问题是,如何将我的1and1域名直接指向我的服务器,以便将请求指向我的服务器上的相应虚拟域,同时自动(并希望即刻)更新我的IP地址? 在此先感谢您的帮助。

小写头

关于CloudFlare和Google的Web服务器,我注意到的一点是它们都使用小写的响应头。 这只是看起来,还是它实际上提供了一个性能提升? 我正在考虑为我的自定义nginx构build做,但到目前为止,我不确定是否会有任何负面/积极的后果。 我知道HTTP 1.1上的RFC 2616规范说头是不区分大小写的,所以我相信它不会导致任何问题,否则Google和CloudFlare将不会使用它们。 来自google.com的示例响应标题: HTTP / 1.1 200 OK 状态:200 OK 版本:HTTP / 1.1 caching控制:私人,最大年龄= 0 内容编码:gzip content-type:text / html; 字符集= UTF-8 date:2013年1月22日(星期二)20:58:07 GMT 到期:-1 服务器:gws x-frame-options:SAMEORIGIN x-xss-protection:1; 模式=块

理想的清漆和nginx设置,以确保跨多个实例的caching一致性

寻找理想的设置,包括nginx作为我们的顶层负载均衡器,负载分布在多个Varnish实例中。 什么是分配这个负载的最佳方式? 一种方法是简单地在实例之间均匀分配,另一种方式是根据请求URL模式分配负载。 有这个最好的做法吗? 另外 – 我们需要手动(从后端)清除caching中的特定项目。 要做到这一点,最简单的方法是向我们的每个Varnish实例发出一个小的HTTP“PURGE”请求。

nginx – php-fpm:访问某些php页面的限制

我有一个文件夹包含一些PHP文件服务与PHP的FMP(fastcgi); 在tihs文件夹中,我有一个文件,我想要允许内部IP和拒绝外部。 我有的问题是,这个configuration… # PHP location ~ ^\/some\/path\/(.*\.php)$ { alias /some/path/; fastcgi_split_path_info ^(.+\.php)(/.+)$; # # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini # # # With php5-cgi alone: # fastcgi_pass 127.0.0.1:9000; # # With php5-fpm: fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; include fastcgi_params; # Changes due to the alias declaration fastcgi_param SCRIPT_FILENAME $document_root/$1; fastcgi_param SCRIPT_NAME […]