nginxをデンバーのフロントエンドとして設定する

最近、nginxをプロキシWebサーバーとしてインストールし、静的にレンダリングすることは、インターネット上でかなり一般的な慣行になりました。 しかし、これに加えて、nginxは他の便利なものに使用できます:自動画像サイズ変更、 便利な動的サブドメインなど。



以前は、nginxの設定をテストするために、運用サーバーのコピーを使用しましたが、今日私は最終的にサーバーに行ってちょっとしたことをするのに飽き飽きし、デンバーがインストールされているサーバーとしてローカルのWindowsマシンでnginxを構成することにしました。



なぜデンバーなのか? これは、必要な開発環境をWindowsベースのマシンに展開するための最速かつ最も簡単な方法だと思うからです。 もちろん、ささいなことをすべて手動で設定するのが好きな人は私には同意しませんが、微調整は実稼働サーバーの多くであり、ローカルマシンのデフォルト設定で十分であるように思われます。



この記事は主に初心者を対象としているので、すぐに警告を発します。教祖は興味深い記事を見つけることはまずありません。





Denverがデフォルト設定でインストールされていること、つまり、 特に、デンバードライブはz:\です。 また、ローカルサイトの名前はexample.localであり、したがって、以前はexample.localのブラウザーで利用可能であり、フォルダーz:\ home \ example.localにあったと想定しています。



Apacheのセットアップ


Zに移動します:\ usr \ local \ apache \ conf \ httpd.confおよび仮想ホストのテンプレートを変更し、それぞれポート8080を指定します-Apacheがデフォルトのポート(80)以外のポートをリッスンし、ポート80を切断しますnginx。ブラウザからのリクエストを処理します。

## ##    . ## ##       Apache  ,   80, ##       . ## #Listen $&{ip:-127.0.0.1}:$&{port:-8080} #NameVirtualHost $&{ip:-127.0.0.1}:$&{port:-8080} #<VirtualHost $&{ip:-127.0.0.1}:$&{port:-8080}> # DocumentRootMatch "/home/(?!cgi-)(.*)^1/(?!cgi$|cgi-)(.*)" # DocumentRootMatch "/home/(?!cgi-)(.*)/public_html^1" # DocumentRootMatch "/home/(?!cgi-)(.*)/public^1" # DocumentRootMatch "/home/(?!cgi-)(.*)^1/html/(.*)" # DocumentRootMatch "/home/(?!cgi-)(.*)^1/domains/(?!cgi$|cgi-)(.*)" # DocumentRootMatch "/var/www/html/(?!cgi-)~(.*)^1/(?!cgi$|cgi-)(.*)" # DocumentRoot "$&" # ServerName "%&/-www" # ServerAlias "%&/-www" "%&/-www/www" $&{host:-} # # $&{directives:-} # # ScriptAlias /cgi/ "$^1/cgi/" # ScriptAlias /cgi-bin/ "$^1/cgi-bin/" #</VirtualHost>
      
      







その後、Apacheはポート8080のリッスンを開始し、 exmaple.localでサイトが利用可能になります:8080

このApacheのセットアップは完了できます。



Nginxのセットアップ




Windowsの最新バージョン( nginx / Windows-0.8.53.zipをnginx Webサイトからダウンロードし、 Zで解凍します:\ usr \ local \ nginx

次に、nginxを構成します:ファイルZ:\ usr \ local \ nginx \ conf \ nginx.conf

ここでのタスクは、仮想ホストを作成することです。 私の場合、設定は次のようになります。

  server { listen 127.0.0.1:80; server_name example.local; location / { proxy_pass http://example.local:8080; proxy_redirect http://example.local:8080/ /; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Real-IP $remote_addr; } location ~* ^.+\.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar)$ { root Z:\home\example.local\www; access_log Z:\home\example.local\example.local.access.log; error_page 404 = @fallback; } location @fallback { proxy_pass http://example.local:8080; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Real-IP $remote_addr; } }
      
      





ここで、ポート80をリッスンしており、リクエストが127.0.0.1:80のexample.localに送信された場合、このリクエストをexample.local:8080にプロキシし、それに応じて、ルートディレクトリからすべてのスタティックを提供することを示しました。



デンバーのセットアップ


ただし、不必要なジェスチャーをする必要がないように、nginxをデンバーとともに開始および停止させたいと思います。 これを行うには、nginx起動スクリプトをdenverに追加する必要があります。

Z:\ denwer \ scripts \ init.d フォルダーにnginx.plというファイルを作成します

nginxサーバーを起動および停止するコードが含まれます。 私は真珠について書いたことがないので、sendmail.plをベースとしてnginxで書き直しただけで、次の内容のファイルを取得しました。

 #!perl -w #    nginx     package Starters::Nginx; BEGIN { unshift @INC, "../lib"; } use Tools; use Installer; use ParseHosts; use VhostTemplate; use StartManager; # Get common pathes. my $basedir = '\\usr\\local\\nginx'; my $startExe = 'nginx.exe'; my $stopExe = 'nginx.exe -s stop'; chdir($basedir); StartManager::action $ARGV[0], start => sub { ### ### START. ### print " NGINX...\n"; if (!-f $startExe) { die "    $startExe.\n"; } else { system("start $startExe"); print " .\n"; } }, stop => sub { ### ### STOP. ### print " NGINX\n"; system("$stopExe"); print " .\n"; }, ; sub checkDaemonIfRunning { } return 1 if caller;
      
      





ロシア語の情報をコマンドラインに正しく表示するには、ファイルをCP-866エンコードで保存する必要があります。



nginxをdenverとともに起動および停止するには、40_nginxという名前のファイルをZに追加する必要があります:\ denwer \ scripts \ main \ start フォルダー (40は最後に実行されることを意味します )、ファイルの内容は単純です

init.d/nginx





Zにまったく同じファイルを追加します:\ denwer \ scripts \ main \ stopフォルダー



これで、nginxはDenverとともにオン/オフになり、ローカルサイトは以前のようにexample.localで利用可能になり、すべての静的のみがnginxを使用してレンダリングされます



テキストに見られる文法上の誤りやタイプミスについては、コメントを乱雑にしないためにPMまたはICQで書いてください



All Articles