我需要将.htaccessredirect转换为Nginx conf。 这是.htaccess Redirect 301 /wp-content/plugins/zendesk-for-woocommerce/api/redirect-test1.html /wp-content/plugins/zendesk-for-woocommerce/api/redirect-test2.html RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ %{ENV:BASE}index.php [QSA,L] DirectoryIndex index.html index.htm index.php index.shtml 这里是我的Nginxconfiguration的相关部分 location / { root /var/www/vhosts/sitename/httpdocs; index index.php index.html index.htm; try_files $uri $uri/ /index.php?$args; } 根据我在网上find的指南,我把它改为: location / { root /var/www/vhosts/sitename/httpdocs; index index.php index.html index.htm; try_files $uri $uri/ /index.php?$args; if (!-e $request_filename){ rewrite ^(.*)$ […]
对于backup指令,Nginx文档声明的最低限度是: 将服务器标记为备份服务器。 当主服务器不可用时,它将被传递请求。 如果您有多个备份并且主服务器出现故障,请问是否有一个备份指定了新的主服务器? 还是会Nginx之间的循环? 而且这是否也适用于TCP? 背景 : 我有一个主服务器和多个备份,但所有的连接应该总是去相同的主或备份。 有点像ip_hash负载均衡模式,除了它应该为所有的连接和客户端使用相同的服务器。
我需要我的应用程序与其他域上的后端API的工作。 我在Ubuntu 16.04上使用nginx 1.12.1。 我添加到我的主机configuration以下(到位置〜.php $部分): add_header 'Access-Control-Allow-Origin' '*'; add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS'; add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Content-Range,Range'; add_header 'Access-Control-Expose-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Content-Range,Range'; 重新加载nginx并用以下JS进行testing: var req = new XMLHttpRequest(); req.open('GET', 'http://api.mydomain.com/v1/client', false); req.send(null); var headers = req.getAllResponseHeaders(); console.log(headers); 控制台日志是: content-type:application / json; 字符集= UTF-8 这意味着CORS已启用,但没有收到其他头文件。 如何获得其他标题?
我试过在互联网上的所有东西,让PHP 5.6在NGINX上工作在Centos 7上。 我不想PHP 5.4(这工作),因为它是过时的地狱。 目前,当我访问我的网站上的一个php页面(502坏门道)时,NGINX给了我下面的错误: * 5连接()失败(111:连接被拒绝),同时连接到上游 我非常渴望帮助和解释。 我在/etc/php-fpm.d中获得了以下设置: listen = 127.0.0.1:9000 user = nginx group = nginx 我有这个在php.ini中设置: cgi.fix_pathinfo=0 这是我对NGINX的configuration: user nginx; worker_processes auto; error_log /var/log/nginx/error.log; pid /run/nginx.pid; # Load dynamic modules. See /usr/share/nginx/README.dynamic. include /usr/share/nginx/modules/*.conf; events { worker_connections 1024; } http { include blacklisted_ips.conf; include cloudflare_settings.conf; log_format main '$remote_addr – $remote_user [$time_local] […]
我一直在试验Nginx的速率限制一段时间,有一些行为,我不明白。 我正在使用我的configuration中的突发和nodelay,并按照预期的速率限制工作如果我保持速率和突发一个很小的值(分别低于40req /秒和40左右)。 当我configurationnginx更高的请求率(并相应地调整突发)的时候,我看到更多的请求比预期的由nginx处理。 例如,如果input是1000 req / sec,并且nginx被configuration为在30 req / sec的速率限制下, burst=30且启用了nodelay,则速率限制按预期工作。 然而,在input1000 req / sec和nginxconfiguration为100 req / sec的速率限制的情况下,当burst=100和nodelay被启用时,我没有看到预期的结果。 在这种情况下,Nginx处理的请求数比预期的要多得多。 在一个1000分钟的testing中,总共有60k个请求被推送给Nginx。 Nginx的configuration速率限制为100 req / sec, burst=100 ,我预计只有〜6000个请求会被Nginx处理,其余的应该被删除。 但是,我看到〜50K的请求得到处理。 即使速率为100瑞克/秒, burst=20 ,约25K的请求得到处理。 使用示例configuration: limit_req_zone $host zone=perhost:10m rate=100r/s; limit_req zone=perhost burst=100 nodelay; limit_req_zone $host zone=perhost:10m rate=100r/s; limit_req zone=perhost burst=20 nodelay; 我保持速度和爆发力相等,以确保如果所有请求都一起login到Nginx,则不会丢失任何请求。
我有安装在Ubuntu 16.04上的ppa最新的NGINX。 nginx版本:nginx / 1.12.1 从我的理解,它应该支持stream和UDP负载平衡。 但是我得到这个错误消息: nginx: [emerg] "stream" directive is not allowed here in /etc/nginx/conf.d/load-balancer.conf:3 这是我在/etc/nginx/conf.d/load-balancer.confconfiguration stream { upstream backend { least_conn; server 172.31.9.51 fail_timeout=10s; server 172.31.20.140 fail_timeout=10s; } server { listen 500 udp; listen 4500 udp; proxy_pass backend; proxy_timeout 1s; proxy_responses 1; error_log logs/dns.log; } }
这里有很多移动的部分,我对这个程序有不同程度的熟悉,所以我希望另一组眼睛能够帮助我发现为什么我在运行Phusion Passenger的Nginx上部署Rails应用程序后得到404。 我的应用程序/公共目录目前驻留在: $pwd >> /root/public_html/photobook/public 我在nginx.conf中的服务器设置: server { listen 80; server_name pb.mysite.com; root /root/public_html/photobook/public; # <— be sure to point to 'public'! passenger_enabled on; } 但重启nginx之后: sudo /opt/nginx/sbin/nginx 去我的浏览器显示由Nginx提供的404页面。 有没有规则处理子域名比我不知道? 或者这完全是另一回事? 另外,因为我是Nginx的Passenger,所以有一个日志文件,我应该find这个日志文件,可以给我更多有用的404反馈,比如它正在查找什么页面? 谢谢! 编辑 首先,感谢关于/ var / log的build议。 我不知道; 这将是一个很大的帮助。 我不确定我的系统日志(我有两个看起来是当前的,然后看起来像.gz备份回去)logging任何相关的,但是: Jun 23 01:25:01 myusername /USR/SBIN/CRON[11379]: (root) CMD ( cd / && run-parts –report […]
我在Ruby on Rails上运行了大多数静态站点,它使用Varnish反向代理caching来保存命中Rails后端。 问题是,用户可以login到网站,当他们这样做,我们使用ESI(边缘包括)来显示用户特定的页面部分。 使用ESI意味着我们必须在Rails后端禁用Gzip压缩(使用Nginx + passenger),否则varnish不能parsing从后端返回的数据以运行ESI处理。 我的问题是,使用反向代理caching的好处是否超过了gzip所有内容的好处? 还是应该尝试摆脱ESI完整,并有两全其美?
我原来就这个问题提出过这个问题 ,但也许SF 在这个问题上是一个更好的地方。 我在使用GWT时,遇到了逆向代理的问题。 后端应用程序部署在上下文中 – 我们称之为/上下文。 当我直接点击它时,GWT应用程序工作正常: HTTP://主机:8080 /上下文/ 我可以在它前面configuration一个反向代理。 这是我的nginx例子: 上游后端{ 服务器127.0.0.1:8080; } … 位置 / { proxy_pass http:// backend / context /; } 但是,当我运行反向代理时,GWT会感到困惑,他说: 2009-10-04 14:05:41.140:/:WARN:Login:ERROR:未find序列化策略文件“/C7F5ECA5E3C10B453290DE47D3BE0F0E.gwt.rpc”; 你忘了把它包含在这个部署中吗? 警告:无法获取模块“https://主机名:444 /”的SerializationPolicy“C7F5ECA5E3C10B453290DE47D3BE0F0E”。 一个传统的1.3.3兼容的序列化策略将被使用。 您可能会遇到SerializationExceptions。 2009-10-04 14:05:41.292:/:WARN:StoryService:错误:未find序列化策略文件“/0445C2D48AEF2FB8CB70C4D4A7849D88.gwt.rpc”; 你忘了把它包含在这个部署中吗? 2009-10-04 14:05:41.292:/:WARN:StoryService:警告:未能获取模块“https://主机名:444 /”的SerializationPolicy“0445C2D48AEF2FB8CB70C4D4A7849D88”; 一个传统的1.3.3兼容的序列化策略将被使用。 您可能会遇到SerializationExceptions。 换句话说,GWT没有得到它需要prepend / context /然后查找C7F5ECA5E3C10B453290DE47D3BE0F0E.gwt.rpc,但只有当请求通过代理服务器时。 解决方法是将上下文添加到网站的URL: 位置/上下文/ { proxy_pass http:// backend / context /; […]
看起来nginx在某些情况下包含一个Vary: Accept-Encoding头,而不pipe我通过“gzip_types”指定的文件types。 我对nginx没有太多的经验。 它实际上发送Vary: Accept-Encoding标头取决于请求的User-Agent标头? 另外,是否有一个设置(或设置的组合),可以修改,以阻止nginx发送特定的用户代理的Vary: Accept-Encoding标头? 似乎有不less设置,我根本不知道哪个优先。 我想下面的东西不会达到我想要的东西(我仍然只想要文件types的Vary: Accept-Encoding响应): gzip_disable“*”;