残念ながら、彼はまだハブに登録しておらず、招待状を送信するためのカルマはほとんどありません。
機会があり、記事が気に入った場合は、招待状を送信するか、カルマを引き上げて、招待状を送信できるようにします。
したがって、タスク:
マルチドメインWebサーバーの便利な管理を整理します。
システムモデル:linux-> nginx-> apache-> php-> mysql。
以前は、ドメインごとにnginxとapacheの個別の設定がありましたが、
新しいホストを追加するには、少なくとも2つの構成を追加する必要がありました。
仕事は便利に整理されました。 実際、2つのスクリプトがありました。 1はホストをnginxに追加し、もう1つはapacheに追加します。 (バインドするホストを追加するためのスクリプトはまだありますが、これは別の話です)。
しかし、ホストの削除を追加する条件では便利ではありませんでした...時にはnginxを登録するのを忘れていましたが、Apacheでは何かが間違っていました...
次のように決定されました。
次のサーバー構造を入力することは一般的に受け入れられています。
/ホーム/ htdocs / [ドメイン名] / www
そして、この事実を踏まえて、nginxとapache用のユニバーサル設定が開発されました:
nginx
user www-data;
worker_processes 2;
error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
access_log /var/log/nginx/access.log;
# log options
log_format main '$host: $remote_addr - $remote_user [$time_local] '
'"$request" $status $bytes_sent '
'"$http_referer" "$http_user_agent" '
'"$gzip_ratio"';
# nginx options
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65 20;
# fastcgi
#fastcgi_intercept_errors on;
server {
listen 80;
location / {
proxy_pass 127.0.0.1:81/;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
}
# Static files location
location ~* \.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js|swf)$
{
if (!-d /home/htdocs/$host/www ) {
set $cur_host "default";
access_log '/var/log/nginx/default.log' main;
}
if (-d /home/htdocs/$host/www ) {
set $cur_host $host;
access_log '/var/log/nginx/host_access.log' main;
}
root /home/htdocs/$cur_host/www;
}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
location ~ /\.ht {
deny all;
}
}
}
さらに、ホスト障害の場合、データは/ home / htdocs / default / wwwから取得されます
Apacheのユニバーサル仮想ホスト:
NameVirtualHost *
<VirtualHost *>
ServerAdmin support@gmail.com
UseCanonicalName Off
VirtualDocumentRoot /home/htdocs/%-2+/www
php_admin_value auto_prepend_file /home/htdocs/fix_doc_root.php
DirectoryIndex index.php index.html index.htm
<Directory />
Options FollowSymLinks
AllowOverride All
<ディレクトリ/ホーム/ htdocs />
オプションインデックスFollowSymLinks MultiViews
すべてを許可
注文許可、拒否
すべてから許可する
ScriptAlias / cgi-bin / / usr / lib / cgi-bin /
<ディレクトリ "/ usr / lib / cgi-bin">
AllowOverrideなし
オプションExecCGI -MultiViews + SymLinksIfOwnerMatch
注文許可、拒否
すべてから許可
ErrorLog /var/log/apache2/error.log
#有効な値には、debug、info、notice、warn、error、crit、
#アラート、emerg。
ログレベル警告
CustomLog /var/log/apache2/access.logの組み合わせ
ServerSignature On
エイリアス/ doc / "/ usr / share / doc /"
<ディレクトリ "/ usr / share / doc /">
オプションインデックスMultiViews FollowSymLinks
AllowOverrideなし
注文拒否、許可
すべてから拒否
127.0.0.0/255.0.0.0 :: 1/128から許可
標準の仮想ホストテンプレートに基づきます。
私は次のことに特に注意を払っています。
1. vhost_aliasモジュールを接続する必要があります
#a2emod vhost_alias
2. VirtualDocumentRoot / home / htdocs /%-2 + / www
%-2 +は、本質的には要求からのドメイン名の最後の2つの部分を意味します。
つまり リクエストがsub.domain.comに送信される場合、DocRootは/home/htdocs/domain.ruになります
要求されたドメインのフルネームが必要な場合は、%-2 +を$ 0に置き換えてください。
3.すべてが素晴らしいでしょうが、この構成では、Apacheは間違った$ _SERVER ["DOCUMENT_ROOT"]を送信します!!!
この迷惑な問題を修正するには、ディレクティブを使用します
php_admin_value auto_prepend_file /home/htdocs/fix_doc_root.php
スクリプト/home/htdocs/fix_doc_root.phpの内容:
<?
$l = explode("/",$_SERVER['SCRIPT_FILENAME']);
$DOCUMENT_ROOT = $_SERVER["DOCUMENT_ROOT"] = implode("/",Array( $l[0], $l[1], $l[2], $l[3], $l[4]));
?>
ご清聴ありがとうございました。
この投稿は私のリクエストで投稿されました。 私自身は登録していません。 記事が気に入ったら-glukas.lss@gmail.com。
セルゲイ・リャプコ