web-dev-qa-db-ja.com

Nginx。同じポートに2つのサイトを構成する

サーバーにウィキメディアサイトを追加しようとしています。このサイトには、すでに別のサイト(PHPを使用していません)があります。 www.hostname.com/wikiのような別のフォルダーに配置したいのですが、混合を避けるために2つの異なるconfファイルがあると便利です。現在、私はこのウィキメディアサイトを別のポート81に配置しようとしていますが、いくつか問題があります。

私のnginx.confは次のようになります:

user  nginx;
worker_processes  1;

error_log  /var/log/nginx/error.log;
#error_log  /var/log/nginx/error.log  notice;
#error_log  /var/log/nginx/error.log  info;

pid        /run/nginx.pid;

events {
    worker_connections  1024;
}

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

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;
    sendfile        on;
    keepalive_timeout  65;
    index   index.html index.htm index.php;
    include /etc/nginx/conf.d/*.conf;

}

そして、conf.dフォルダーには2つのファイルがあります。

site.confこれは次のようになります:

server {
    listen 80;

    server_name hostname.com;

    auth_basic "Restricted Access";
    auth_basic_user_file /etc/nginx/htpasswd.users;

    location /kibanaadmin/ {
        proxy_pass http://localhost:5601/;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $Host;
        proxy_cache_bypass $http_upgrade;
    }

    root /usr/share/nginx/html/pruebas/site;
    index index.php index.html index.htm;

    try_files $uri $uri/ /index.php?$args;

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

そしてwiki.confファイル:

server {

        listen 81;

        server_name hostname.com;

        root /usr/share/nginx/html/tests/mediawiki;

        client_max_body_size 5m;
        client_body_timeout 60;

        index index.html index.htm index.php;

        location / {
                try_files $uri $uri/ @rewrite;
                autoindex on;
                index index.html index.html index.php;
        }

        location @rewrite {
                rewrite ^/(.*)$ /index.php?title=$1&$args;
        }

        location ^~ /maintenance/ {
                return 403;
        }

        location ~ \.php$ {
                autoindex on;
                include fastcgi_params;
                fastcgi_pass unix:/tmp/phpfpm.sock;
        }

        location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
                try_files $uri /index.php;
                expires max;
                log_not_found off;
        }

        location = /_.gif {
                expires max;
                empty_gif;
        }

        location ^~ /cache/ {
                deny all;
        }

        location /dumps {
                root /usr/share/nginx/html/tests/mediawiki/local;
                autoindex on;
        }
}

私は2つの異なる問題に気づきました:

1つ目は、phpファイルを取得しようとすると、502 Bad Gatewayが表示され、error.logに次のメッセージが表示されます。

2015/07/15 10:56:57 [crit] 16306#0:* 6 connect()to unix:/var/run/php-fpm/php-fpm.sock failed(2:No such file or directory)whileアップストリームに接続、クライアント:111.222.333.444、サーバー:hostname.com、リクエスト: "GET /info.php HTTP/1.1"、アップストリーム: "fastcgi:// unix:/ var/run/php-fpm/php-fpm .sock: "、ホスト:" hostname.com "

私は自分のphp設定をチェックしましたが、正しいと思います。それがnginx設定の問題なのかPHPなのかわかりません。

2番目の問題は、hostname.com:81にアクセスすると、403 Forbidden(hostname.com:80の他のサイトは問題なく動作します)と次のログメッセージが表示されることです。

2015/07/15 10:59:15 [エラー] 16306#0:* 9のディレクトリインデックス

「/ usr/share/nginx/html/pruebas /」は禁止されています、クライアント:111.222.333.444、サーバー:hostname.com、リクエスト:「GET/HTTP/1.1」、ホスト:「hostname.com:81」

私の主な質問は、どうすればポート80と自分のサイトにウィキメディアサイトを配置できますが、nginxの2つのconfファイルを使用してそれを行うことができます(不可能な場合は、1つのファイルでそれを行うにはどうすればよいですか)。 PHP nginxのものを適切に構成しますか?

注:ウィキメディアサイトに他のサイトと同じものを与えたので、権限の問題ではないと思います。 Centos7.1を使用しています。前もって感謝します。

1
Carlos Vega

あなたの答えをありがとう。私は両方の問題を解決しました。最初の問題は502Bad Gatewayで、PHPモジュールを再インストールし、nginxファイルに適切な構成を書き込むことで解決しました(wikiロケーションブロックのロケーション〜* .php $部分を確認してください) )。

私はついに1つの構成ファイルだけを利用し、新しいlocationブロックを書き込み、PHP構成をright方法。

2番目の問題(403)も、このファイルを使用して解決されました。

server {
    listen 80;

    server_name hostname;

    location /admin/ {

        auth_basic "Restricted Access";
        auth_basic_user_file /etc/nginx/htpasswd.users;

        root /usr/share/nginx/html/pruebas/admin;
        index index.php index.html index.htm;

        proxy_pass http://localhost:5601/;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection 'upgrade';
            proxy_set_header Host $Host;
            proxy_cache_bypass $http_upgrade;
    }


    # the following line is responsible for clean URLs
    try_files $uri $uri/ /index.php?$args;

    location /site {
        alias /usr/share/nginx/html/site;
        auth_basic "Restricted Access";
        auth_basic_user_file /etc/nginx/htpasswd.users;
    }

    location /wiki {

        auth_basic "Restricted Access";
        auth_basic_user_file /etc/nginx/wiki/htpasswd;

        alias /usr/share/nginx/html/mediawiki;

        location ~* \.php$ {
          fastcgi_pass    127.0.0.1:9000;
          include         fastcgi.conf;
          fastcgi_param   SCRIPT_FILENAME $request_filename;
        }

        location ~* \.(js|css|png|jpg|jpeg|gif|ico|xml)$ {
            expires 1y;
                access_log off;
                log_not_found off;
        }
    }

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

}
0
Carlos Vega

構成を別々のファイルに含める1つのオプションは、includeディレクティブを使用することです。このようなもの:

server {
    listen 80;

    server_name hostname.com;


    auth_basic "Restricted Access";
    auth_basic_user_file /etc/nginx/htpasswd.users;

    location /kibanaadmin/ {
        proxy_pass http://localhost:5601/;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $Host;
        proxy_cache_bypass $http_upgrade;
    }

    root /usr/share/nginx/html/pruebas/site;
    index index.php index.html index.htm;

    try_files $uri $uri/ /index.php?$args;

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    include '/path/to/wiki.conf';
}

そしてあなたの wiki.confは次のようになります:

location /wiki {
    alias /usr/share/nginx/html/tests/mediawiki;
    try_files $uri $uri/ @rewrite;
    autoindex on;
    index index.html index.html index.php;
}

location @rewrite {
    rewrite ^/(.*)$ /index.php?title=$1&$args;
}

location ^~ /maintenance/ {
    return 403;
}

location ~ \.php$ {
    autoindex on;
    include fastcgi_params;
    fastcgi_pass unix:/tmp/phpfpm.sock;
}

location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
    try_files $uri /index.php;
    expires max;
    log_not_found off;
}

location = /_.gif {
    expires max;
    empty_gif;
    }

    location ^~ /cache/ {
            deny all;
    }

    location /dumps {
            root /usr/share/nginx/html/tests/mediawiki/local;
            autoindex on;
    }
}
1
Tero Kilkanen