我正在通过nginx提供web服务(API + Webiste),并且最近更改了它的规范域名。 该API是从面向用户的网站的子目录拆分(例如/ api /和/ download /是API的一部分,其余属于该网站)。 我现在想将网站部分redirect到新的域名,但是服务于没有redirect的API请求(以保持服务器负载不变)。 因为networking服务器可以通过多个域来访问,所以我需要redirect与新规范不匹配的所有东西。 就像是 IF request-domain != new-domain AND resource not in (/api/, /download/): redirect to new domain ELSE: # serve site proxy_pass http://app_server; 我没有find一种合适的方式在nginx中进行(双)否定比较,我不能将它们反转为正比较,因为替代域名和非API资源都非常多,不想在nginxconfiguration中维护。 任何想法将不胜感激!
免责声明:我不是Linux,Nginx,Varnish或任何与服务器相关的专家,但是我已经设法启动并运行了一个Linode VPS,并为其提供了两个带有Wordpress的博客到不同的域。 然而; 这些网站基本上只是其他设置的副本,没有我自己做的,所以我想为自己尝试一下。 尝试了Apache,尝试了Nginx与Wordpress和W3总caching和APC。 我喜欢优化,如果一起运行Nginx和Varnish会产生比Nginx更好的结果,那么是否好奇呢? 这是一个Wordpress网站与APC和W3总caching。 或者只是运行Nginx作为反向代理与清漆caching与Apache作为后端(至less据我了解,可能是错误的)总体上最好的解决scheme? 任何input,不胜感激。 谢谢!
任何人都可以在使用php-fpm时解释在Nginxconfiguration中添加以下行的原因 location ~ \..*/.*\.php$ { return 403; } 谢谢。
这是我的nginxconfiguration文件的一部分: # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # location ~ \.php$ { root html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /var/www/$fastcgi_script_name; include fastcgi_params; } 几乎网站加载,因为/的位置也被设置为/ var / www这个configuration文件。 location / { root /var/www; index index.php index.html index.htm; } 当我使用phpinfo()并读取PHPvariables表时,我注意到了这一点: _SERVER["DOCUMENT_ROOT"] /usr/share/nginx/html 其他的variables(大部分是在nginx.conf中configuration的)作为服务器名,脚本文件名等被发送到php。 所以,nginx不会把这个variables发送给PHP。 我要做什么? 我使用PHP 5.3.8和nginx 0.8
我已经build立了一个运行nginx的web服务器,另外一台服务器在Linode虚拟机上运行php-fpm。 Nginx将所有的PHP请求代理到PHP后端,这很好。 问题在于,实际的Web文件需要同时存在于Web服务器和PHP工作者上,需要同步。 这是如何完成的? 我在想一个最佳的解决scheme是使用共享存储(NFS)并在每个服务器上安装存储,但我没有这方面的经验。 任何好的指导呢? Linode甚至有可能吗? 另一个解决scheme(虽然不是很好),将会每3秒运行一次像rysnc,但是会有同步滞后,更不用说所有额外的networking活动了。 感谢您的想法。
例如,我们正在为一些url获取exception多的stream量,例如: http://www.example.com/search.php?type=0&mode=search&searchterm=Little http://www.example.com/product.php?productid=12345678 在nginx中阻止这些URL的最好方法是什么? 任何其他build议来限制特定页面每秒/分钟的连接数量?
我一直在使用Varnishcaching服务器,我的网页闪电般快,在Google的Pagespeed和100 @ Pingdom中获得了97分。 我使用了Varnish(代理到nginx),NGINX(只有本地可用,代理* .php到php-fpm(但我想转移到HipHop PHP编译器))。 所以当我的页面很快,只有〜500 / 1GB的Ram被使用时,我请我的一个朋友对这台机器的HTTP服务器进行压力testing。 我configuration了以下Anti-DDoS机制: iptables防火墙限制连接数/秒 一些更多的iptables检查(以SYN,ICMP等开始的会话) 清漆caching 对小网页进行重新编码以存储可能经常在替代phpcaching中获取的一些值(即:当前正在播放的歌曲,120的ttl应该是好的) 除了当前正在播放的APC供电歌曲外,网页上没有任何dynamic数据,并且完全不需要会话。 所以现在对我的问题,我的朋友从他被授权使用的一台机器启动了DoS攻击,而且我的服务器速度非常快。 我很担心,所以我使用串口控制台,并检查清漆日志,显示:会话开始会话结束 而这一直在重复。 我提前访问了我的控制台,并禁止了IP,我的网页又回来了。 现在因为不需要会话,我需要VCL语法来禁止所有会话,除了subdir / user中的脚本。
server { server_name *.com.another.com; location / { root /var/www/html/$host; index index.html; } } 在上面的例子中,如果有人向www.jaja.com.another.com发出请求,nginx将在目录/var/www/html/www.jaja.com.another.com 这是我所需要的:如果有人向www.jaja.com.another.com发出请求,我希望nginx在目录/var/www/html/www.jaja.com 换句话说, $host是www.jaja.com.another.com 。 我需要删除$host中的.another.com Nginxstringreplace对我来说是新的
我在ubuntu上使用nginx ,默认情况下,它具有类似于Apache的sites-available/enabled目录结构来存储站点configuration文件。 我编译nginx (因为我需要一个第三方模块)使用下面的configuration: ./configure \ –prefix=/opt/nginx/version \ –http-log-path=/var/log/nginx/access.log \ –error-log-path=/var/log/nginx/error.log \ –pid-path=/var/run/nginx.pid \ –with-http_ssl_module \ –user=nginx \ –group=nginx \ –add-module=… Nginx工作正常,但现在我需要configuration所有我的网站在/opt/nginx/version/conf/nginx.conf这是不可维护的sites-available/enabled目录结构,我可以创build1个文件每个站点,并决定哪些启用符号链接。 我看了一下安装选项,但是我看到的只有–conf-path来指定nginx.conf的path。 有没有办法重新编译nginx的sites-available/enabled目录结构?
我在nginx中有以下location块: location /stats { allow 127.0.0.1; deny all; } 如果我尝试从我家的MacBook查看/stats ,我会得到403 Forbidden 。 但是,如果我查看/stats/index.php我能够查看它。 我的印象是location /stats会recursion地应用(即对所有的孩子)。 我如何使这个位置块的行为如预期? 谢谢。