いくつかの時間前、同社はちょうど櫛とサーバ統合の、このような混乱を作るために、この機会を利用して、全体の杭州から張家口に石のタワーサーバーの移行要求に集まる必要があり、移行は月締めくくっ
アポロ、kibana、grafana、ジェンキンス、などのいずれかを使用してポート80、へ:マシンの外に最適化された1/3程度に、我々は、そのような今、いくつかの視覚的なUIの生産に配備断片化しているとして、完了後にいくつかの問題に遭遇しました
少数のマシンに、ポート80が十分ではありません、他にどのような安全のために公衆に開いているポート、非80以外の今、もはやオープンパブリックネットワークポート、これらの視覚的なUIはもはやへ直接アクセスすることはできません。だから、別の方法を見つける必要があります。
ワン:nginxのでリバースプロキシありません
この2つの問題を解決するために、最初の自然な反応は、理想的なの私の考えは、このような次のチャートである必要があり、リバースプロキシを使用して考えることです。
すべての要求の両方のユーザーは、現在のURLは、バックエンドプロキシにジャンプする必要がある場合には、優れた戦略は、現在のホストはジャンプ・トゥ・バックと判断されたかを判断するためにnginxのようにするだろうかを決定するためにnginxの聞かせて、nginxのでした
これであなたは解決策を完璧ことができるようにWebサーバは、a.mip.comはアポロにジャンプなど、j.mip.comは、その上のジェンキンスにジャンプします。そして、それはないですか?nginxのでは、リライトを使用することができます
命令モジュールが判断する場合。
II:命令が使用している場合
ここでは、nginxの比較的原始的な技術に言及し、サードパーティ製のモジュールを使用する必要がある場合、あなたはまた、nginxのを再コンパイルする必要があり、単純にnginxのを拡張した、OpenRestyを使用するので、ここで、トラブルの多くを使用し、しなければなりません
これは、最新ダウンロードするには、成熟したLuaのモジュールの数を統合1.15.8をインストールし、nginxのとまったく同じ、。
あなたは成功したインストールディレクトリopenrestyを持っていることを見たときに、デフォルトでは、は/ usr / local /ディレクトリにインストールされています。
#1 [ローカルホストローカル@ルート] lsの ビンなどのゲームがlibexecのlibのlib64を含める openresty sbinに共有SRC #の[ローカルホストローカル@ルート] PWD は/ usr / localは、
次に、あなたが彼女についてopenrestyバージョンを見て-v nginxのを使用することができます。
[ルート@のローカルホストsbinに]#のPWD は/ usr / local / openresty / nginxの/ sbinに [ルート@ローカルホストsbinに]# [ルート@のローカルホストsbinに]#。/ nginxの- Vの nginxのバージョン:openresty /1.15.8.1
便宜上、私はnginxのオープン3台のサーバーを使用します:
<1> 192.168.23.129:80 nginxのは、まず、それが代理で、敷地内にオープンしました。
<2> 192.168.23.129:8001 nginxの第二のサイト、シミュレーションアポロを開きます。
<3> 192.168.23.129:8002 nginxの第三のサイトを開き、アナログジェンキンス。
1.アポロのシミュレーション:
サーバー{ 聞く 8001 ; SERVER_NAME somenameのエイリアスanother.alias。 位置 / { ルートHTML。インデックスapollo.html。 } }
デフォルトのポート8001ページのウェブサイトはapollo.html、以下に示すようにnginxのは、htmlディレクトリにある場合apollo.htmlこのパスです。
[ルート@ localhostのhtmlの]#のPWD は/ usr / local / openresty / nginxの/ htmlの [ルート@ localhostのhtmlの]#のLS 50x.html apollo.html index.htmlをjenkins.html
2.ジェンキンスシミュレーション
サーバー{ 聞く 8002 ; SERVER_NAME somenameのエイリアスanother.alias。 位置 / { ルートHTML。 インデックスjenkins.html; } }
ハは、パスjenkins.htmlファイル上に示しました。それらを繰り返しません。
3.プロキシシミュレーション
サーバー{ 聞く 80 。 サーバー名はlocalhost。 場所 / { 場合($ホスト= " a.mip.com " ){ proxy_passます。http:// localhostを:8001; } もし($ホスト= " j.mip.com " ){ proxy_passのhttp:// localhostを:8002。 } }
変数$ホストシステムを通じて、書き換えモジュールの下に必要な条件は、ウェブサイトにホストURLジャンプの現在の値を決定した場合にのみ見ることができます。
4.ホストのマッピング
さて、それからだけa.mip.comとIPアドレスを192.168.23.129缶をnginxのためにマッピングされたj.mip.comする必要があります。覚えやすく、本物ではないこれらのドメイン名のため。
192.168。23.129 a.mip.com 192.168。23.129 j.mip.com
5. [スタート] nginxの
[ルート@ localhostのsbinの]#./ nginxの [ルート@ localhostのsbinの]# [ルート@ localhostのsbinの]# [ルート@ localhostのsbinの]#のは、netstat - tlnp アクティブなインターネット接続(サーバーのみ) 原Recv関数 -Qを送る-Qをローカルアドレス外国の住所州PID / プログラム名 TCP 0 0 0.0。0.0:8001 0.0。0.0:* LISTEN 3802 / nginxのを:マスター TCP 0 0 0.0。0.0:8002 0.0。0.0:* LISTEN 3802 / nginxのを:マスター TCP 0 0 0.0。0.0:80 0.0。0.0:* LISTEN 3802 / nginxのを:マスター TCP 0 0 0.0。0.0:22 0.0。0.0:* LISTEN 1172 / sshdのを TCP 0 0 127.0を。0.1:25 0.0。0.0:* LISTEN 1724 / マスター にtcp6 0 0 ::: 22 ::: * LISTEN 1172 / sshdの にtcp6 0 0 :: 1:25 ::: * LISTEN 1724 /マスター
あなたは、あなたが確認するために、ブラウザに行くことができ、80,8001,8002ポートが開かれている、チャートで見ることができます。
私たちが解決この問題は完璧だった見ることができ、まあ、それは問題Benpianだと私たちはここに、あなたを助けるBenpian期待して、出会いの実際のシーンに話をすべてnginx.confです。
#USERの誰もいません。 worker_processes 1 ; #error_logログ / error.logに。 #error_logログ / error.logに予告。 #error_logログ /error.log 情報。 #pidログ / nginx.pid。 イベント{ worker_connections 1024 。 } HTTP { のmime.typesを含みます。 default_typeアプリケーション / octet- ストリーム。 LOG_FORMATメイン ' $ホスト----> $ REMOTE_ADDR - $ REMOTE_USER [$ time_local] "$依頼" ' ' $ステータスの$ body_bytes_sent "$ HTTP_REFERER" ' ' "$ HTTP_USER_AGENT" "$ HTTP_X_FORWARDED_FOR" ' ; access_logのログ / メインのaccess.log。 sendfileの上; 上#tcp_nopush; #keepalive_timeout 0 ; keepalive_timeout 65 ; #のGZIP に、 サーバー{ 聞く 80 。 サーバー名はlocalhost。 #charset KOI8 - R。 #access_logログ / メインhost.access.log。 #位置 = / 取得{ #set_unescape_uri $キーの$ arg_keyを。#これはngx_set_misc必要です #redis2_query GET $キー。 #redis2_pass 10.105。13.174:6379 ; #} 場所 / { 場合($ホスト= " a.mip.com " ){ proxy_passはhttp:// localhostを:8001。 } もし($ホスト= " j.mip.com " ){ proxy_passのhttp:// localhostを:8002。 } ルートHTML。 インデックスのindex.htmlのindex.htm。 } #error_page 404 / 404 の.html。 #は、静的ページにサーバ・エラー・ページにリダイレクト / 50x.html #1 error_page 500 502 503 504 / 50x.html。 位置 = / 50x.html { ルートHTML。 } #プロキシでリスニングのApacheにPHPスクリプト127.0。0.1:80 # #location〜\ .PHPの$ { #proxy_passます。http:// 127.0.0.1; #} #上のリスニングのFastCGIサーバにPHPスクリプトを渡し127.0。0.1:9000 #1 #location〜\ .phpの$ { #ルートのhtml; #はfastcgi_pass 127.0を。0.1:9000 。 #fastcgi_indexのindex.phpを。 #のfastcgi_paramのSCRIPT_FILENAME / スクリプト$ fastcgi_script_name。 #はfastcgi_paramsが含まれます。 #} #、.htaccessファイルへのアクセスを拒否した場合はApache " のドキュメントルート #は、nginxのに同意" の1つの #の #location〜/ {\ .htから #はすべて拒否します。 #} } #IPの混合物を使用して、別の仮想ホスト -名- 、およびポート- ベースの構成 #1 サーバ{ 聞く 8001 。 SERVER_NAME somenameのエイリアスanother.alias。 位置 / { ルートHTML。 インデックスapollo.html。 } } サーバー{ 聞く 8002 。 SERVER_NAME somenameのエイリアスanother.alias。 ロケーション/ { ルートHTML。 インデックスjenkins.html; } } #HTTPSサーバ #1 の#server { #聴く 443 SSL。 #サーバー名はlocalhost。 #ssl_certificateのcert.pem。 #ssl_certificate_keyのcert.key。 #1 ssl_session_cache共有:SSL:1メートルを。 #ssl_session_timeoutの5メートル。 HIGH#1のssl_ciphers:!aNULL :! MD5; ;の#ssl_prefer_server_ciphers #位置 / { #ルートHTML。 #インデックスのindex.htmlのindex.htm。 #} #} }