在一个专用服务器ubuntu上运行多个nginx

时间:2017-02-16 17:02:11

标签: php ubuntu memory nginx

是否可以在单个专用服务器上运行多个NGINX? 我有一个256GB内存的专用服务器,我正在运行多个PHP脚本,但由于PHP使用内存而导致挂起。 当我检查

free -m

它甚至没有使用1%的内存。

所以,我猜它与NGINX有关。

我可以在此服务器上安装多个NGINX,并像

一样使用它们
 5.5.5.5:8080,  5.5.5.5:8081,  5.5.5.5:8082

我已经为PHP分配了20 GB内存,但仍然无法正常工作。

原因: - NGINX提供504网关超时

4 个答案:

答案 0 :(得分:1)

PHP或NGINX配置错误

如果满足某些条件,您可以在同一服务器上运行nginx的多个实例。但这不是你应该寻找的解决方案(这也许根本无法解决你的问题)。

答案 1 :(得分:0)

我以这种方式设置了我的Ubuntu / PHP / Nginx服务器(它实际上也并行运行了一些Node.js服务器)。这是一个在AWS EC2媒体实例(m3)上正常工作的配置示例。

upstream xxx {
#   server unix:/var/run/php5-fpm.sock;
    server 127.0.0.1:9000 max_fails=0 fail_timeout=10s weight=1;
    ip_hash;
    keepalive 512;
}

server {
    listen 80;
    listen 8080;
    listen 443 ssl;
    #listen [::]:80 ipv6only=on;

    server_name xxx.mydomain.io yyy.mydomain.io;
    if ( $http_x_forwarded_proto = 'http' ) {
        return 301 https://$server_name$request_uri;
    }

    root /home/ubuntu/www/xxxroot;
    index index.php;

    location / {
        try_files $uri $uri/ /index.php;
    }


    location ~ ^/(status|ping)$ {
        access_log off;
        allow 127.0.0.1;
        #allow 1.2.3.4#your-ip;
        #deny all;
        include fastcgi_params;
        fastcgi_pass 127.0.0.1:9000;
    }

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;

        fastcgi_pass adn;
        #fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index index.php;
#fastcgi_param SCRIPT_FILENAME /xxxroot/$fastcgi_script_name;
        fastcgi_param SCRIPT_FILENAME $request_filename;
#fastcgi_param DOCUMENT_ROOT /home/ubuntu/www/xxxroot;
        # send bad requests to 404
        #fastcgi_intercept_errors on;
        include fastcgi_params;
    }

    location ~ /\.ht {
            deny all;
    }

}

希望它有所帮助,

答案 2 :(得分:0)

我认为你正在超时。您的PHP-Scripts接缝运行时间很长。

检查以下内容:

    你的php.ini 中的
  • var obj = [ { "id":1, "name":"alpha" }, { "id":1, "name":"beta" }, { "id":1, "name":"gama" } ]; var j = 0; while(j < 5) { console.log(obj[j].name); j++; } 在您的PHP-FPM配置的max_execution_time
  • request_terminate_timeout
  • 在您的nginx配置的www.conf部分或fastcgi_read_timeout部分中
  • http

答案 3 :(得分:0)

Nginx被设计为更多用作反向代理或负载均衡器,而不是控制应用程序逻辑和运行PHP脚本。运行多个执行php的nginx实例并不能真正发挥服务器应用程序的优势。作为替代方案,我建议使用nginx在一个或多个apache实例之间进行代理,这些实例更适合执行繁重的php脚本。 http://kbeezie.com/apache-with-nginx/包含有关让apache和nginx很好地协同工作的信息。