我有一个NGINX服务器设置来处理一个网站的caching(在别处运行)。 像魅力一样工作,但是我们希望pipe理员可以select从后台刷新caching。 我正在考虑使用FTP来处理这个问题,只需从caching目录中删除所有文件即可。 我已经设置了这样的caching: proxy_cache_path /var/cache/nginx/my_site levels=1:2 keys_zone=MY_SITE:8m max_size=2048m inactive=720m; 但是这些文件存储的权限为700.我怎样才能告诉NGINX也授予组(770)的权限? 然后我将创build的FTP用户添加到该组。 任何其他build议来处理冲洗将是OK(我heave读取StackOverflow上的线程 )。 后台位于另一个位置,所以我将不得不使用一些远程技术。
我试图从FreeBSD 9.2上的php-fpm从Apache主机解决scheme切换到nginx。 我正在改写我的脚本,现在创buildvHosts和nginx的东西,并获得403状态,当我尝试访问vHost。 我正在挣扎几个小时,不能不知道要设置的权限。 你有什么想法? 这是我的createvhost.sh: #!/usr/local/bin/bash DOMAIN="example.com" PHP_USER="chris_www" PHP_GROUP="$PHP_USER" NGINX_USER="www" NGINX_GROUP="$NGINX_USER" ADMIN_EMAIL="[email protected]" NGINX_CONF_FOLER="/usr/local/etc/nginx" PHP_FPM_CONF_FOLDER="/usr/local/etc/php-fpm.d" WEBROOT="/www/vhosts" IP="10.0.0.4" VHOST_PORT=9000 source $WEBROOT/config/vhost_port.conf ## Create user and add it to $NGINX_GROUP echo "Creating user and adding it to group $NGINX_GROUP" pw user add $PHP_USER -s /sbin/nologin pw group mod $PHP_GROUP -m $NGINX_GROUP echo "Creating neccessary folders" mkdir -p […]
我想设置NGINX将caching中的内容提供给每个人,但只有一个IP地址。 我想实现的2个目标是: 请确保从指定的IP我从来没有击中caching,但将被送达磁盘上的实际文件(所以如果我删除该文件,它应该立即给404) 对于所有其他IP:如果请求的内容尚未在caching中立即从文件中加载并将其存储在caching中(所以如果我删除文件,它应该在caching期间服务) 这是我目前的configuration: server { listen 80; listen 127.0.0.1:9999 default; server_name storage.example.com; charset utf-8; autoindex off; access_log "/var/log/nginx/storage.access.log"; udplog_tag "www.example.com/storage"; set_real_ip_from 127.0.0.0/8; set_real_ip_from unix:; real_ip_header X-Real-IP; server_name_in_redirect off; port_in_redirect off; location /a/ { alias "/storage/public/a/"; } location /b/ { alias "/storage/public/b/"; } } server { listen 80; server_name static.example.com; charset utf-8; autoindex off; […]
在开发过程中,每当我在PHP中创build一个致命错误时,我的浏览器中都会出现空白页,或者只是我的错误编程;)。 这是非常烦人的,我必须查看原始nginx错误日志文件,看到致命的错误,并find他们的行号。 我似乎无法find如何使Nginx在浏览器中显示PHP致命错误。 这里是我的nginxconfiguration的相关部分: location @fpm { fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_NAME index.php; fastcgi_param SCRIPT_FILENAME $document_root/index.php; fastcgi_param PATH_INFO $path_info; } 以下是我的错误日志中显示的一个示例错误,然后导致一个空白的浏览器页面: 2014/01/04 14:53:52 [error] 20082#0: *403 FastCGI sent in stderr: "PHP message: PHP Fatal error: Cannot redeclare class ClassName in FilePath on line 356" while reading response header from upstream, client: 192.168.1.10, […]
我有一个运行NGINX和Drupal 7的CentOS 6.4 x32 VPS。为了改善响应,我想安装和configurationAPC。 要做到这一点,我的第一个尝试是使用PECL来安装它。 开始我解雇了这个命令 yum install php-pear php-devel httpd-devel (这是因为pear需要phpize,可以在devel中find,这取决于httpd-devel包中的apxs。)我得到以下错误。 Error: Package: php-devel-5.3.3-27.el6_5.i686 (updates) Requires: php(x86-32) = 5.3.3-27.el6_5 Installed: php-5.4.23-1.el6.remi.i686 (@remi) php(x86-32) = 5.4.23-1.el6.remi Available: php-5.3.3-26.el6.i686 (base) php(x86-32) = 5.3.3-26.el6 Available: php-5.3.3-27.el6_5.i686 (updates) php(x86-32) = 5.3.3-27.el6_5 You could try using –skip-broken to work around the problem You could try running: rpm -Va […]
我的configuration: server { listen 80; server_name mydomain.com; rewrite ^(.*)$ $scheme://www.mydomain.com$1; } server { listen 80; server_name www.mydomain.com; return 301 https://www.mydomain.com$request_uri; if ($host !~* ^(www.mydomain.com)$ ) { return 444; } } server { listen 443; server_name www.mydomain.com; ssl on; ssl_certificate /path/to/www.mydomain.com_chain.pem; ssl_certificate_key /path/to/www.mydomain.com.key; … } 什么工作 : 从mydomain.comredirect到www.mydomain.com 从www.mydomain.comredirect到https://www.mydomain.com 什么不能正常工作 : 当我直接进入https://mydomain.com进入浏览器时,redirect到www.mydomain.com根本不会发生,但是请求被传递到应用程序服务器上https://mydomain.com 它看起来好像端口80“入口”正在跳过,服务器正在直接访问端口443,但我不是一个Nginx的专家,所以我不能告诉 什么是上面的https://mydomain.com问题的解决scheme?
我最近一直在努力找出在我们的环境中的performance是瓶颈的地方。 环境(每台服务器是Linux VM,8核,32 GB RAM): 负载平衡:50 Web服务器(rsync):51,52,54 DB(MySQL 5.6 master master):56,58 我build立了一个负载平衡的环境,HAProxy负载均衡,Nginx的SSL终止在..50。 HAProxy侦听端口80,并将stream量指向.. .51,52或54.它还侦听端口3306,并在.._。56和58之间引导stream量以实现数据库负载平衡。 Nginx监听端口443,并处理SSL握手,同时将实际stream量转发到同一台机器上的端口80,由HAProxy处理。 该设置以〜1000 /秒处理非SSL连接,但SSL连接以〜300 /秒处理。 我最近通过将我们的HAProxy版本升级到可以处理SSL终止的版本来改变环境。 HAProxy现在侦听端口80和端口443,在后者处理SSL握手,并将stream量转发到Web服务器:51,52和54.性能保持大致相同,但configuration更简单。 我已经看到了负载平衡器的顶部,在这两种情况下,服务器上几乎没有任何负载。 端口80或443的stream量。 如我所料,Web服务器在我的端口80testing期间受到敲击,但是在我的443testing中它们显示的负载非常小。 是否有任何你知道的事情可以做,以增加我们的SSL连接的响应时间? 任何和所有的提示或build议是受欢迎的,我想获得尽可能多的performance,我可以。 谢谢大家!
我们正在努力解决以下问题,试图理解处理这个问题的最佳方式。 总的目标是这样的: –> example.com/app1 –> app1.com/ –> example.com/app1/images –> app1.com/images –> example.com/app2 –> app2.com/ –> example.com/app2/images –> app2.com/images –> example.com/app3 –> app3.com/ –> example.com/app3/images –> app3.com/images 我们已经考虑了以下解决scheme,其中一些工作,其他人不工作。 我们试图找出最好的办法是什么,因为我们绝不是专家。 到目前为止,我们使用的工具是Nginx来做反向代理,但这个工具并不重要,我们对任何东西都是开放的。 解决scheme1 Nginx重写正文文本,为app1请求添加“app1”等。正如上面的例子,有一个请求app1和一个index.html返回。 index.html又有一些标签,看起来像<img src="images/hello.png" />文件。 这显然是行不通的,所以我们重写body(即index.html)来说<img src="app1/images/hello.png" /> 。 问题与解决scheme1 我们必须非常善于制定机构重写规则,否则我们可以重写我们不打算的东西,然后打破一些JS或HTML。 这个解决scheme也不适用于一些JS代码(我们使用的是Angular),它并不隐式地写出视图的位置,而是由框架本身组合在一起。 解决scheme2 将每个应用程序从根移到它自己的文件夹。 这意味着任何img或其他请求都会更新到<img src="app1/images/hello.png" /> 。 问题与解决scheme2 我们必须改变所有现有的3个网站,从各自的新根源请求资源。 任何帮助将不胜感激,在此先感谢。
我使用nginx + php5-fpm与多个站点和池。 fpm中的每个池都被chrooted。 通常情况下一切都按预期工作。 但有时(每1/20次请求),特别是如果我之前要求站点B,站点A服务于站点B的内容。我已经查看了nginxconfiguration,它总是使用正确的fpm套接字(查看错误/访问日志) 。 另外每个fpm池都有自己的名字和套接字。 我发现这篇文章描述我的问题,但我没有安装APC …: http : //regilero.github.io/Drupal/English/2013/05/16/Warning_chrooted_php_fpm_and_apc/ 那么有人有一个想法可能是错的?
我想检查我的configuration查询string。 如果它匹配加载一些页面。 如果不匹配,redirect它。 所以我写这样的configuration: … location / { if ($args ~ "api_url") { proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_redirect off; index index.html; try_files $uri /page_cache/$uri /page_cache/$uri/ /page_cache/$uri.html @puma; break; } rewrite ^ http://domain.com permanent; } … 但是它不起作用,因为我不能在if中使用所有这些指令。 我试图只使用一个break ,但它不工作。 我怎么能做到这一点? 谢谢。