我已经在Ubuntu Server 12.04LTS上设置了Rails,Passenger,nginx和PostgreSQL。 然而,在试图访问应用程序/网站时,我遇到了一个错误页面,说应用程序无法启动,因为源文件丢失。 Error message: cannot load such file — bundler 。 我的nginxconfiguration( /opt/nginx/conf/nginx.conf ): user railsapp; worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; passenger_root /home/railsapp/.rvm/gems/ruby-1.9.3-p194/gems/passenger-3.0.14; passenger_ruby /home/railsapp/.rvm/rubies/ruby-1.9.3-p194/bin/ruby; server { listen 80; server_name fitness_schedules.local; root /home/railsapp/fitness_schedules/public; passenger_enabled on; rack_env development; } } 这是错误消息: 应用程序需要的源文件缺失。 […]
我正在将几个站点从Apache迁移到Nginx,我碰到了一个拥有虚拟目录(别名)的网站。 别名本身工作正常,适当的文件得到服务,但PHP代理不正确。 server { listen 443 default_server ssl; server_name dev.myproject.mydomain.net; root /opt/dev/project-root; index index.php; ssl_certificate /etc/ssl/certs/server.crt; ssl_certificate_key /etc/ssl/certs/server.pem; access_log /var/log/nginx/vh.project.access.log; error_log /var/log/nginx/vh.project.error.log; location ~ ^/alias_name/(.*) { alias /opt/dev/project-root/www/$1; location ~ ^/alias_name/(.+\.php)$ { alias /opt/dev/project-root/www/$1; include /etc/nginx/conf/php; } } location ~ \.php$ { include /etc/nginx/conf/php; } } 我还没有尝试过,但我怀疑,如果我将\.php$位置块的内容复制到别名块中,事情会正常工作,但是我的工程师讨厌复制。 有什么办法可以避免这种情况(假设它可以工作)? 直觉上,似乎两个位置块将被评估。 我敢肯定,我也可以将php块移出一个单独的文件并包含它。 任何build议最好的(阅读:大多数nginx-y)的方式来处理这将是非常感激。 UPDATE 基于凯尔的回答,我已经把PHP代理移出到一个单独的conf/目录。 conf/php文件有这样的代码: location […]
看看我的PHP-FPM统计页面,看起来只有一个进程正在处理所有的连接。 我的猜测是,请求正在执行如此之快,到目前为止,它不需要使用另一个进程。 会是这样吗? 以下是我在PHP-FPM统计信息页面中看到的内容: pool www process manager static start since 432796 accepted conn 90399 listen queue 0 max listen queue 1 listen queue len 128 idle processes 63 active processes 1 total processes 64 max active processes 6 max children reached 0 这就是我的PHP-FPMconfiguration看起来像: [General] pid = /var/run/php5-fpm.pid error_log = /var/log/php5-fpm.log syslog.ident = php-fpm syslog.facility […]
我有通过haproxy-> nginx-> fastcgi接收请求的后端Web服务器。 Web应用程序用于查看多个IP在X-Forwarded-For标题中出现,并与逗号(左边最原始的IP)链接在一起。 在最近的某个时间点(刚刚注意到,所以不知道是什么原因造成的)发生了一些变化,现在我只看到一个单一的IP传递到我的Web应用程序的头部。 我用haproxy 1.4.21和1.4.22(最近升级)尝试了相同的行为。 Haproxy有前锋标题集: option forwardfor Nginx的fastcgi_paramsconfiguration定义这个头被传递给应用程序: fastcgi_param HTTP_X_FORWARDED_FOR $http_x_forwarded_for; 任何人有什么想法可能会出错在这里? 编辑:我刚开始在nginx日志中logging$ http_x_forwarded_forvariables,而nginx只能看到一个单一的IP,而不应该永远如此,因为我们应该总是看到我们的haproxy IP添加在那里,对吗? 所以,问题必须在nginx处理的variables进来,或haproxy不适当的build设。 我会继续挖… 编辑#2:我启用HAProxy中的请求和响应头日志logging,它不是吐出X-Forwarded-For任何东西,这似乎很奇怪: Oct 10 10:49:01 newark-lb1 haproxy [19989]:66.87.95.74:47497 [10 / Oct / 2012:10:49:01.467] http service / newark2 0/0/0/16/40 301 574 – – —- 4/4/3/0/0 0/0 {} {} “GET / 2zi HTTP / 1.1”O 以下是我在前台设置的选项: mode http […]
请假设有一个PHP CMS根据数据库中的ID检索内容。 所以每次访问这个网站时,它都会与数据库进行交互并处理PHP请求。 在用户访问该页面之后,Nginx或Varnish可以caching和存储页面吗? 所以下次如果有用户访问那个页面,它将从caching中加载。
我有一个运行在Apache / Passenger下的适度复杂的Rails应用程序,闲置一段时间后变得没有响应。 这需要几分钟的时间来响应,但可以通过重新启动Web服务器暂时恢复。 服务器负载是微不足道的,因为它是一个内部应用程序,很less有并发用户。 我也试过nginx,所以这不是Apache导致的问题。 Apache或Rails日志中没有任何有用的东西。 根据Passenger文档,我发送了一个SIGABRT并且有一个堆栈跟踪(在下面)。 它的数据库不是重载,我试过禁用任何可能导致locking的后台处理。 SignalException(SIGABRT): 乘客(3.0.17)lib / phusion_passenger / abstract_request_handler.rb:443:在`block in install_useful_signal_handlers' activerecord(3.2.8)lib / active_record / connection_adapters / mysql2_adapter.rb:73:在`call' activerecord(3.2.8)lib / active_record / connection_adapters / mysql2_adapter.rb:73:在'ping' activerecord(3.2.8)lib / active_record / connection_adapters / mysql2_adapter.rb:73:在`active?' activerecord(3.2.8)lib / active_record / connection_adapters / abstract_adapter.rb:219:在`verify!'中 activerecord(3.2.8)lib / active_record / connection_adapters / abstract / connection_pool.rb:327:in`block in […]
我注意到在默认情况下,nginx已经启用了function,因此对于文件系统中存在的目录,没有结尾斜杠的url请求会自动通过301redirect添加一个斜杠。 例如,如果目录css存在于我的根目录下,那么请求http://example.com/css会导致一个301到http://example.com/css/ 。 但是,我有另一个站点,由负载平衡器卸载SSL。 在这种情况下,当我请求https://example.com/css时,尽pipeHTTP_X_FORWARDED_PROTO头被负载平衡器设置为https ,nginx会发出301redirect到http://example.com/css/ 。 这是一个nginx错误吗? 或者我错过了一个configuration设置?
我想澄清一下如何创build有限的用户作为WEBSERVER与Nginx来访问我的VPS用户的正确方法。 我习惯于不安装FTP,只能通过SFTP访问。 每个设置都可以吗? 这是我通常从创build一个名为“admin”的受限用户,应该能够通过SFTP访问具有网站数据的文件夹 mkdir -p /var/www/mysite.com/ adduser admin adduser admin www-data chown -R root:root /var/www chmod -R 755 /var/www chmod -R 755 /var/www/mysite.com chown -R admin:www-data /var/www/mysite.com/ 这似乎不是正确的方式,我总是有权限上传一些文件时(例如一般的Wordpress)。 我想创build一个完全按照“提供”在客户购买托pipe服务(即FTP,我更喜欢SFTP访问)时所提供的用户工作的用户。 这是个人用户,但我认为有限的用户是通过SFTP使用“根”更安全。
你如何获得子域作为一个variables添加重写? 你好 .example.com应该去example.com/user.php?u= 你好,但仍然显示为只是你好 .example.com 我目前在做http://example.com/users/ hello,但想为用户提供Tumblr风格的域名。 rewrite ^/users/(.*)$ /user.php?u=$1 last; 另外,如果在子域hello.example.com/settings/之后有像/ settings /这样的页面,我需要重写一个settings.php
所以,我只是赢得了5GB存储空间和256MB内存的基本VPS的免费一年,我认为我能做的最好的事情是将memcache服务与其他两台服务器分开,并可能实现一个NGINX代理或清漆(或者两者兼而有之,是否合乎逻辑甚至可能?) 你怎么看我的使用它的想法,服务器可以保存这些服务? 如果没有,我可以给它什么用途? 关于使用NGINX或Varnishcaching静态内容,是否可以使用外部服务器来caching? 我知道这听起来可能是一个愚蠢的问题,但我从来没有面对过这个事实