我对服务器pipe理非常陌生,而且我正在努力解决一个在Debian远程机器上无法工作的nginx conf文件,我非常头痛。 每当我尝试debugging文件做nginx -c sites-enabled/estadaodados.com -t ,我结束了这个答案: nginx: [emerg] "server" directive is not allowed here in /etc/nginx/sites-enabled/estadaodados.com:1 这是我的nginx.conf文件: user www-data; worker_processes 2; pid /var/run/nginx.pid; events { worker_connections 768; multi_accept on; use epoll; } http { set_real_ip_from 127.0.0.1; real_ip_header X-Forwarded-For; sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 20; client_max_body_size 15m; client_body_timeout 60; client_header_timeout 60; client_body_buffer_size 1K; […]
我刚刚阅读了这篇Digital Ocean的文章 ,想知道最后一个例子中的拓扑结构是否可以用nginx来实现。 我对负载平衡器如何处理不在应用程序服务器之前的两个专用caching服务器感兴趣。 他们描述这样的过程: 负载均衡器检查caching后端以查看请求的内容是否被caching(caching命中)或caching未命中(cache-miss) 如果caching命中:将请求的内容返回到负载均衡器并跳到步骤7.如果caching未命中:caching服务器将请求转发到应用后端,通过负载均衡器 负载均衡器将请求转发到应用后端 app-backend从数据库中读取数据,然后将请求的内容返回给负载平衡器 负载均衡器将响应转发到caching后端 caching后端caching内容,然后将其返回给负载均衡器 负载均衡器将请求的数据返回给用户 我想负载均衡器应该在上游指令中有两个组: upstream cachebackend { server cache-1.example.com; server cache-2.example.com; } upstream appbackend { server app-1.example.com; server app-2.example.com; } 然后从一个服务器指令: location / { proxy_pass http://cachebackend; # if that one is a MISS, request this one: # proxy_pass http://appbackend; # and then save the response on […]
有没有一个“不”相当于nginx匹配? 我在想 location !~ "\.(html|php)$" { deny all; } 允许只提供HTML和PHP文件。 另一种方法是“否认所有”,然后是“允许所有”。 唉,这似乎干扰某些在我的nginx文件中的一些早期的位置魔术。
我运行一个drupal 7应用程序(3backends),我有3个清漆服务器不断拒绝提取后端。 我在这里读了很多类似的错误,但仍然无法解决我的问题,扔503清漆取得失败的上师冥想。 我已经阅读所有的post,所有似乎都build议高超时,我已经设置为600s,许多不build议.probe,我有round.robin(切换后端),这里是我的后端configuration: backend project1 { .host = "myhost.ip"; .port = "80"; .connect_timeout = 600s; .first_byte_timeout = 600s; .probe = { .timeout = 600s; .interval = 10s; .window = 5; .threshold = 2; .request = "GET HTTP/1.1" "Host: example.com" "Connection: close"; } } 我已经监视了我的错误日志和访问日志,顺便说一下,我注意到我有太多这样的错误,但我不希望你有偏见。 [info] Client prematurely closed connection (broken pipe) 有时 reqv failed […]
我对nginx非常陌生(大约1天左右),我们正在使用它作为一些应用程序的反向代理。 我们将添加另一个将处理现有请求的一小部分的应用程序。 我正试图拦截那些碰到鳕鱼/文章API并在参数中包含item.id的url,然后把这些请求和它们的参数发送到这个我现在所没有准备好的新应用程序。 我想单独留下所有其他请求,即API不是“/ cod / acticles”,请求在参数中不包含item.id。 应该发送到新应用程序的示例url。 http://server/mdata/transfer/CUSTOMER/cod/articles?filter={"item.id":"ID00000000123"……}&limit=50&fields=[]&sort=……. 不应该发送的示例url。 http://server/mdata/transfer/customer/cod/articles?filter{"lang":"en_US","article.id":"123456"}&limit=50…. http://server/mdata/transfer/customer/cod/items?filter{"lang":"en_US","article.id":"123456"}&limit=50…. http://server/mdata/transfer/customer/doc/articles?filter{"lang":"en_US","article.id":"123456"}&limit=50…. 注意:….只是意味着其他参数 以下是我目前在Nginx中的configuration。 它似乎做了“拦截”,但有一些东西看起来不对我。 首先,我相信使用“如果”并不理想,可能有更好的方法来做到这一点。 但是我没有成功的匹配参数部分。 其次,nginx访问日志显示3个匹配url的请求。 X2301响应和1200响应。 这是预期的吗? 如果是这样,有一个更好的方法来做到这一点,只有一个请求,因为它似乎我已经创build了Nginx的附加负载。 #existing config for all /mdata/transfer/* APIs location /mdata/transfer/ { add_header Access-Control-Allow-Origin *; allow all; proxy_pass http://mds; } #static page which acts as a stub end point for testing. location /proxyapp { root /opt/www; […]
我们把Nginx作为Tomcat的反向代理。 他们两个都用ISO 8601时间戳logging访问,但是tomcat以毫秒为单位(这是标准的一部分)增加。 因此,如果Nginx获得请求并将其传递到Tomcat,则Nginx日志可能具有“2015-10-29T00:37:02 + 00:00”的时间戳,并且Tomcat将具有“2015-10-29T00:37”的时间戳:02,106 + 0000“为同一访问。 我不关心格式的细微差别,但没有毫秒(Tomcat日志中的“,106”部分)是一个问题,因为它阻止我们正确地关联日志。 有没有办法让Nginx的日志中包含几毫秒?
我们正在运行Python WSGI服务器(uWSGI),并更改为套接字文件而不是tcp / ip localhost:port连接。 现在我们的uwsgi日志充满了像这样的错误 IOError: write error SIGPIPE: writing to a closed pipe/socket/fd (probably the client disconnected) during GET /en/photos/?orientation… (ip …) !!! uwsgi_response_write_headers_do(): Broken pipe [core/writer.c line 296] during GET /en/photos/?orientation… (ip …) 改回本地主机:端口,日志中没有错误。 页面正在加载两种configuration。 我们更喜欢Unix套接字,因为它们速度更快一些…有没有人知道是什么原因导致了这个错误? uwsgi.ini: daemonize = /var/log/uwsgi/debug.log module = project.wsgi:application socket=127.0.0.1:1111 #socket = /tmp/tmp.sock #chmod-socket = 666 master = […]
我正在尝试使用Nginx页面caching而不是Wordpresscaching。 caching似乎工作正常,但我很难设置基于variables的条件caching头 – 无论用户是否login到WordPress。 如果用户login,我希望不应用高速caching头,如果不是,则可以通过Wordpress和CDN将页面高速caching一天。 我发现我只能在if语句中添加一个头文件。 我已阅读(但没有完全理解,因为这里迟了)[如果是邪恶的] [1]。 我也发现了一个堆栈交换(在我的笔记本电脑上,现在找不到它)的答案,在一个if块中只有一个add_header工作。 任何人都可以给我一个替代scheme的想法,可能会更好吗? 我知道我可以将失效与caching控制结合起来,但是我想要更多的头文件,再加上我想了解和学习。 这里有相关部分的一个显着简化的configuration。 server { server_name example.com; set $skip_cache 0; # POST requests and urls with a query string should always go to PHP if ($request_method = POST) { set $skip_cache 1; } if ($query_string != "") { set $skip_cache 1; } # Don't cache uris […]
目前的设置单一的CentOS 6 VPS与6G内存运行Apache 2.2,mariadb和PHP通过FastCGI。 服务器主要是WordPress的网站,但也有一些其他基于PHP的网站。 目前,我们并没有为任何网站使用HTTPS,但计划将其添加到基于PHP的网站进行身份validation。 将Nginx作为反向代理(有或没有caching)添加到同一个物理服务器上的apache + FastCGI前面的静态内容,有没有什么好处? Apache没有加载mod_php,所以它已经在静态服务很快了。 1A。 保持apache在中间并保持apache-php与FastCGI的关系有什么好处。 1B。 如果我们把Apache-FastCGI改成Apache-mod_php,会有什么好处呢? 由于Apache现在唯一的任务是提供dynamic内容,那么mod_php会提高性能吗? 和Apache-FstCGI一样,apache必须要求一个单独的进程(FastCGI)来parsingphp,而在mod_php中,apache进程可以直接parsingphp。 1C。 哪个服务器应该处理SSL的东西? 如果将apache从中间删除,Nginx直接使用php-fpm作为dynamic内容,会有什么优势? 我们正在考虑让CloudFlare免费计划添加CDN,那么如果前面有CloudFlare,那么添加nginx是否有意义呢?
我正在用nginxbuild立一个Magento商店,而且这家商店工作得很好。 但是,现在我想设置一个更高的client_max_body_size值(比方说100米),但仅限于pipe理部分。 我已经在网上search,但我不知道如何得到这个工作。 我可能误解了这种情况下的位置块,所以也许你可以进一步帮助我。 我有以下服务器块: server { listen 80; server_name {domain}; root {root}; location / { index index.html index.php; try_files $uri $uri/ @handler; expires max; } ## These locations should be protected location ^~ /app/ { deny all; } location ^~ /includes/ { deny all; } location ^~ /lib/ { deny all; } location ^~ […]