0

現在、Paster へのプロキシとして nginx を使用してセットアップされたサーバーで実行されている Pylons Web サイトが 1 つあります。近い将来、同じサーバーで別の Pylons サイトをホストする予定です。

同じルートで nginx+Paster を使用する場合、異なるポートで 2 つの paster インスタンスを実行し、1 つの nginx サーバーを 127.0.0.1:808(1|2) へのプロキシ フォワーダーとして使用することになります。

2 つの異なるサイトに対して 2 つの paster サーバーを実行することは、悪い考えのように思えます。サーバー上に 10 個の Pylons サイトがある場合、10 個の Paster サーバー インスタンスが実行されていることになります...

より良い解決策は何ですか?

4

2 に答える 2

1

単一の paster インスタンスを使用して、複数のアプリケーションを起動できます。以下のリンクには、paster の urlmap を使用してこれを実現する方法を説明する素晴らしい記事があります。

http://countergram.com/pylons-virtual-host-multiple-domain

于 2011-03-22T12:52:37.390 に答える
1

いくつかの paster インスタンスを実行しても問題はないと思いますが、「運用環境」により適しているため、FastCGI (または wsgi) と仮想ホストの使用を検討する必要があります。FastCGI の例:

pid         /var/run/nginx.pid;
user            www;
worker_processes    1;

events {
    worker_connections  1024;
}

http {
    include     /etc/mime.types;
    default_type    application/octet-stream;

    sendfile        on;
    gzip            on;
    keepalive_timeout   65;

    # First site
    server {
        listen *:443;
        server_name     first.example.com;

        ssl         on;
        ssl_certificate     /etc/www/cert.pem;
        ssl_certificate_key /etc/www/key.pem;
        ssl_session_timeout 5m;
        ssl_protocols       SSLv3 TLSv1;

        location / {
            fastcgi_pass            127.0.0.1:9000;
            fastcgi_param PATH_INFO     $fastcgi_script_name;
            fastcgi_param REQUEST_METHOD    $request_method;
            fastcgi_param QUERY_STRING  $query_string;
            fastcgi_param CONTENT_TYPE  $content_type;
            fastcgi_param CONTENT_LENGTH    $content_length;
            fastcgi_param REMOTE_ADDR   $remote_addr;
            fastcgi_param SERVER_ADDR   $server_addr;
            fastcgi_param SERVER_PORT   $server_port;
            fastcgi_param SERVER_NAME   $server_name;
            fastcgi_param SERVER_PROTOCOL   $server_protocol;
            fastcgi_param HTTPS     on;
            fastcgi_pass_header     Authorization;
            fastcgi_intercept_errors    off;
        }
        access_log  /var/log/first.access.log main;
        error_log   /var/log/first.error.log;
    }
    # Second site
    server {
        listen *:443;
        server_name     second.example.com;

        ssl            on;
        ssl_certificate        /etc/www/cert1.pem;
        ssl_certificate_key    /etc/www/key1.pem;
        ssl_session_timeout    5m;
        ssl_protocols        SSLv3 TLSv1;

        location / {
            fastcgi_pass            127.0.0.1:9001;
            fastcgi_param PATH_INFO        $fastcgi_script_name;
            fastcgi_param REQUEST_METHOD    $request_method;
            fastcgi_param QUERY_STRING    $query_string;
            fastcgi_param CONTENT_TYPE    $content_type;
            fastcgi_param CONTENT_LENGTH    $content_length;
            fastcgi_param REMOTE_ADDR    $remote_addr;
            fastcgi_param SERVER_ADDR    $server_addr;
            fastcgi_param SERVER_PORT    $server_port;
            fastcgi_param SERVER_NAME    $server_name;
            fastcgi_param SERVER_PROTOCOL    $server_protocol;
            fastcgi_param HTTPS        on;
            fastcgi_pass_header        Authorization;
            fastcgi_intercept_errors    off;
        }
        access_log    /var/log/second.access.log main;
        error_log    /var/log/second.error.log;
    }
}

ここで、次のサイトに移動する必要があります。

first.example.com -> localhost:9000
second.example.com -> localhost:9001

「リッスン」に IP を設定することもできます。

listen 192.168.1.1:443;
listen 192.168.1.2:443;

そのため、DNS 名の代わりに IP を使用できます。

Pylons アプリの場合、構成を FastCGI に変更する必要があります。

[server:main]
use = egg:Flup#fcgi_thread
host = 127.0.0.1
port = 9000

最初のホストの場合、および 2 番目のホストの場合:

[server:main]
use = egg:Flup#fcgi_thread
host = 127.0.0.1
port = 9001

お役に立てれば。

于 2010-10-13T09:49:58.820 に答える