Articles of nginx

nginx响应未知的主机名?

我有两个域指向同一个服务器,一个我们打电话home ,一个我们打电话给web 。 我在端口80上运行nginx的HTTP和443的HTTPS。 在我的服务器定义中,我定义了两个服务器: server { listen 80; server_name web; # … } server { listen 443; server_name web; # … } 在实践中,它工作得很好。 但是,当我尝试访问指向与web相同的IP地址的home时,我得到服务的web而不是404或类似的东西。 如何将nginxconfiguration为404个与服务器名称不匹配的请求? 我是否需要定义一个默认的服务器,将事件弹回到404s?

为什么我的nginx服务器收到针对ads.yahoo.com的请求?

我有一个面向公共互联网的nginx代理。 几天前,我开始收到大量的请求,指向我的网域无效的url。 摘自nginx access.log: 216.245.222.172 – – [07/Feb/2014:10:45:26 +0000] "GET http://ads.yahoo.com/st?ad_type=iframe&ad_size=300×250&section=5306841&pub_url=${PUB_URL} HTTP/1.0" 301 184 "http://www.echogap.com/index.php?option=com_content&view=article&id=1383:Credit-Report—How-Do-Late-Payments-Affect-My-Credit-Report-And-Score?&catid=154" "Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/125.2 (KHTML, like Gecko) Safari/125.8" 有些观点我需要帮助理解/解决: 为什么请求的url包含完整的域名,而不是通常的path? 如何甚至没有针对我的域名的请求到达我的服务器(.ie,ads.yahoo.com)? 避免提供这些请求的最佳方法是什么? 我想黑名单发起ips是没有问题的,因为请求来自很多不同的地址。 描述的情景是否意味着明确的攻击?

用supervisord运行(并监视)nginx

我将从我的使用案例开始,因为我很可能没有使用正确的工具来完成这项工作。 请让我知道,如果我这样做是错误的 用例:我有一个托pipe多个Web应用的CentOS服务器。 我希望能够相信我的Web服务器和应用程序服务器将运行。 我的堆栈看起来像 networking服务器:nginx 应用程序服务器:uWSGI web框架:flask / python 我想用supervisord来监视nginx和uWSGI。 在我的/etc/supervisor.conf中,我有 [program:nginxgo] command = /usr/sbin/nginx autostart=true autorestart=unexpected exitcodes=0 stdout_logfile=/home/webdev/nginxgo.log stderr_logfile=/home/webdev/nginxgoerr.log [program:uwsgi_emperor_go] command = uwsgi –emperor /etc/uwsgi/emperor.ini autostart=true autorestart=unexpected stopsignal=INT stdout_logfile=/home/webdev/emp.log stderr_logfile=/home/webdev/emperr.log directory=/home/webdev/ user=webdev 我得到了uWSGI进程。 当我input[root@mymachine]# /usr/local/bin/supervisord -n -c /etc/supervisord.conf 输出是 2014-11-26 14:07:56,917 CRIT Supervisor running as root (no user in config file) 2014-11-26 14:07:56,951 […]

如何将no-cache标头添加到由apache和nginx提供的所有404页面?

我最近在切换到Cloudflare后遇到了一个问题,解决scheme是基本上阻止Cloudflarecaching404响应。 在我们的负载均衡的多服务器设置中,偶尔会出现404s,但是它们可以通过rsync(通过lsyncd)快速修复。 在Cloudflare之前,随着rsync的工作,对404ed文件的重新请求将很快变为200。 但是,由于Cloudflarecaching基于caching头的所有数据,并且apache和nginx都没有发送404caching头,所以Cloudflare最终caching了404响应。 我一直在寻找一个解决scheme,在apache和nginx(全球所有托pipe域名)上为404s全局添加这样一个头文件,但到目前为止都是空白的。 谁能帮忙? 谢谢。

NGINX目录中的PHP别名不起作用

我有一个全新的Ubuntu 14.04服务器安装。 我已经安装了nginx,php等… server { listen 80; listen [::]:80; server_name testone.local; root /var/www/htmlone; index index.html; # pass the PHP scripts to FastCGI server listening on the php-fpm socket location ~ \.php$ { try_files $uri =404; fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } location /alias { alias /var/www/htmlalias; location ~ \.php$ { try_files […]

在Ubuntu,NGINX,HHVM上将PHP-CLI恢复到默认path

在尝试优化我的全新LEMH (Linux,Nginx,MariaDB,HHVM) 我通过使用以下命令,将PHP-CLIconfiguration更改为对/usr/bin/php使用HHVM: $ sudo / usr / bin / update-alternatives –install / usr / bin / php php / usr / bin / hhvm 60 起初一切似乎工作正常…但我很快发现与NGINX和WordPress的漂亮的固定链接主要的URL重写问题。 我终于决定恢复到默认的PHP-CLI,select更传统的堆栈configuration。 所以这里是我的问题:用什么sudo命令将PHP-CLIconfiguration恢复为默认值; 这样使用sudo php –ini显示: 的/ etc / PHP5 / CLI /etc/php5/cli/php.ini /etc/php5/cli/conf.d 等等… 而不是当前的无限循环; 当一个root用户在hhvm服务重启kills the process中hhvm kills the process时,这个hhvm 。 我已经向前和向后search了HHVM文档,但还没有find任何可能的解决scheme。 任何帮助/智慧,非常感谢! 你的, Perp1exed。

Nginx和Regexes有什么区别?

Nginx和Regexes有什么区别? 例如: if ($http_referer ~* www.foobar.net) { … } VS if ($http_referer ~ www.foobar.net) { … }

Nginx – 在一个IP不同的端口上设置多个SSL证书 – 无SNI

我有一个要求在一个IP上设置多个SSL证书,但我不允许使用SNI(客户端不支持它)。 是否有可能做到相同的服务器名称,但不同的端口?

通过IP访问网站比域名更快?

我目前收到很多stream量(每天有超过100万的网页浏览量)。 我在Digital Ocean的负载平衡器后面安装了四个16GB RAM 8 CPU nginx服务器(这是他们添加的一项新function)。 当我直接去每个服务器,通过IP,网站加载速度很快。 但是,如果我去的域名,似乎有一个1 – 3秒的延迟。 这是负载平衡器不能正常工作吗? 或者这是一个域名问题? 请注意,我正在使用循环和粘滞会话。 这里有什么我需要检查我的域名设置?

nginx不使用gzip与后端服务器交谈

我们的Web服务器正在运行IIS 7,并configuration为压缩dynamic和静态内容。 当我直接打这些服务器时,gzip压缩工作。 我最近把nginx放在它们前面,并且gzip压缩已经停止。 我能够通过在nginx本身上显式启用gzip压缩来解决这个问题,但是考虑到我有六个后端和只有一个活动的nginx框,这似乎有点低效。 看来nginx正在删除Accept-Encoding头。 有没有人有任何build议如何“纠正”这种行为? 示例configuration: upstream backend { server 127.0.0.1:8080; } server { listen 80; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; location / { proxy_pass http://backend; } }