サーバーにウィキメディアサイトを追加しようとしています。このサイトには、すでに別のサイト(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を使用しています。前もって感謝します。
あなたの答えをありがとう。私は両方の問題を解決しました。最初の問題は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;
}
}
構成を別々のファイルに含める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;
}
}