对于一个学校项目,我可以select任何框架,我喜欢创build一个相当简单的网站。 我select了Mojolicious,因为我喜欢Perl。 我也被要求select三个networking服务器:Nginx,Apache或Lighttpd。 过去,我曾经使用Apache来开发一个PHP学校项目。 我对Mojolicious完全失去了兴趣。 我理解的方式,我完全可以不使用任何这些Web服务器,因为我有Morbo / Hypnotoad? 我仍然必须使用networking服务器,因为它是规则之一,所以configuration起来更简单,并且考虑到Mojolicious的最高效率。 感谢您的任何帮助,
这似乎是一场永无休止的战斗,让Perl和nginx玩得很好:(我已经安装了一个新的开发服务器,我不会让你知道所有的细节,但足以说我已经安装了(通过apt-get)。 sudo apt-get update && sudo apt-get upgrade sudo apt-get install nginx sudo apt-get install php5-cli php5-cgi spawn-fcgi php-pear sudo apt-get install mysql-server php5-mysql sudo apt-get install fcgiwrap 然后我configuration我的网站,使用: server { listen 80; server_name site.net.net www.site.net.net; access_log /srv/www/site.net.net/logs/access.log; error_log /srv/www/site.net.net/logs/error.log; root /srv/www/site.net.net/www; location / { index index.html index.htm; } location ~ \.php$ { try_files $uri […]
我使用nginx作为FastCGI包装器,我开始: spawn-fcgi -F 3 -u www-data -s /var/run/perl-fcgi.sock -P /var/run/perl-fcgi.pid — ./perl-fcgi.pl 现在,假设我有一个简单的脚本: #!/usr/bin/perl print "Content-type: text/plain\r\n\r\n"; print "hello\n"; 脚本运行正常,当我请求/text.pl时,我看到“hello”。 但是,正如你在FastCGI包装器的第106行中看到的那样,脚本是用exec()来执行的,所以它基本上在它自己的Perl环境中运行。 当我没有一个已经初始化的脚本,但是独立地调用它时,它不会毁了FastCGI的整个概念吗? 在nginx上通过FastCGI进行交互的首选方式是什么? 欢呼, – 波兰人 PS: spawn-fcgi是lighttpd的程序,它启动FCGI包装并将它们绑定到套接字。
我有一个包含的string fastcgi_cache_path /var/run/nginx-cache15 levels=1:2 keys_zone=MYSITEP:100m inactive=60m; 这个脚本的目标之一就是根据前一个文件的值查找来增加nginx-cache的两位数字。 为了做到这一点,我使用这个代码: # Replace cache_path PREV=$(ls -t /etc/nginx/sites-available | head -n1) #find the previous cache_path number CACHE=$(grep fastcgi_cache_path $PREV | awk '{print $2}' |cut -d/ -f4) #take the string to change SUB=$(echo $CACHE |sed "s/nginx-cache[0-9]*[0-9]/&@/g;:a {s/0@/1/g;s/1@/2/g;s/2@/3/g;s/3@/4/g;s/4@/5/g;s/5@/6/g;s/6@/7/g;s/7@/8/g;s/8@/9/g;s/9@/@0/g;ta};s/@/1/g") #increment number sed -i "s/nginx-cache[0-9]*/$SUB/g" $SITENAME #replace number 也许不是那么优雅,但它的作品。 另一个目标是增加所有出现的MYSITE x的最后一个字母( MYSITEP ,在这种情况下,应该变成MYSITE […]
关于如何使用FastCGI到CGI包装来使用nginx来提供Perl代码,有很多教程。 但是我很喜欢使用Perl模块,所以我不需要包装器。 我试图找出正确的方法来设置。 这是我迄今为止的代码: #!perl use CGI; use FCGI; my $s = FCGI::OpenSocket(':9000',20); my $r = FCGI::Request( \*STDIN, \*STDOUT, \*STDERR, \%ENV, $s); while ($r->Accept >= 0) { my $cgi = CGI->new; print "Content-type: text/html\n\n"; print "<html><body>The foo input is ", $cgi->param('foo'), "</body></html>"; $r->Finish; } 并像这样在nginx中启用它: location /foo { include /etc/nginx/fastcgi_params; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.pl; } […]
我有一个托pipe多个客户的网站托pipe平台。 这是一个催化剂应用程序负载均衡后面的nginx 。 我希望每个客户都能够select是否让他们的域名前面有www ,或者前面没有www ,然后我希望能够适当地redirect。 我的问题是,最好是在nginx级别还是在Catalyst级别处理这样的事情? 通常情况下,一个简单的www到non-wwwredirect将在负载平衡器级别处理,但我认为,由于我redirect的方式将因域而异,因此在Catalyst级别处理redirect可能更有意义? 如果是这样,在Catalyst处理从www到non-www (或viceversa)的redirect的最佳方式是什么? 或者如果你认为nginx会更好,那么使用它最好的办法是什么? 谢谢!
我正在运行Starman(v0.4014)和ngynx作为前端代理的Dancer(v1.3202)应用程序。 我每隔几个小时都会注意到负载均衡器中的延迟高峰,并且怀疑是否工作人员达到了他们的请求限制并重新启动。 延迟从30ms平均到1000ms或更多。 我检查了MongoDB,并没有长时间运行的查询。 – max-requests实际上对员工有什么作用?当员工达到这个限制时会发生什么?
我使用mojolicious创build了一个简单的API,但是我刚刚从Apache迁移到Nginx ,无法弄清楚如何正确处理url 这是我的服务器块configuration文件 server { listen 80; listen [::]:80; root /var/www/example.com/public_html; index index.pl index.html index.htm index.nginx-debian.html; server_name example.com www.example.com; location / { gzip off; include /etc/nginx/fastcgi_params; fastcgi_pass 127.0.0.1:8090; fastcgi_param SCRIPT_FILENAME /var/www/example/public_html/$fastcgi_script_name; } } 这是由Mojolicious处理,但我得到以下结果。 Method: GET URL: Base URL: http://example.com/clients/ 正如你所看到的基础URL被捕获,但URL是空的。 我的模式是 Pattern Methods Name /clients GET clients 哪里不对 ? 我如何正确处理请求?
我试图实现一个Catalyst应用程序使用nginx作为静态文件的前端Web代理,并使用Starman作为我的后端Web服务器。 (我可以使用Apache和FastCGI,它工作得很好,但我真的希望得到整个PSGI / Plack和Starman的东西) Starman启动好了,可以在http://localhost:5000上处理我的请求。 当我启动nginx作为我的前端代理时,无论何时何地使用$c->uri_for方法,我的url都会变得丑陋,并随着端口号(5000)而$c->uri_for 。 例如: $ C-> uri_for( “/login”) 变 http://myapp.example.com:5000/login 而不是 http://myapp.example.com/login 我有一些日志正在创build,所以我可以看到什么X-Forwarded-Host和X-Forwarded-For被设置为。 对于普通的请求,有一些值(来自nginx),但是每当使用$c->uri_for方法时,这些值都不存在。 有没有其他人有这个问题? 我是否在configurationnginx或Catalystconfiguration文件时丢失了其他的东西? 谢谢! nginxconfiguration: 服务器{ 听80; server_name myapp.example.com; 位置/静态{ root / data / users / MyApp / root; 到期30天; } 位置 / { proxy_set_header主机$主机; proxy_set_header X-Forwarded-Host $ host; proxy_set_header X-Real-IP $ remote_addr; proxy_set_header X-Forwarded-For $ proxy_add_x_forwarded_for; proxy_pass […]
我已经成功地使用Plack + Starman在我的开发机器上pipe理我的Catalyst应用程序,使用基于我在Dave Rolsky的Silki发行版中find的守护程序脚本。 然后我设置nginx将代理服务器反向到我的Starman服务器,并为nginx服务的别名提供静态目录。 到现在为止还挺好。 但是,对于我的应用程序STDERR应该在哪里login,我感到不知所措。 它没有达到nginx(我想这是有道理的),但我无法find很多关于Starman可能在哪里login的文档 – 如果有的话。 我看了Plack的中间件模块,但只看到访问日志的选项。 有人能帮我吗?