nginxは同じドメイン名で、2つのnodejsプロジェクトを共存させます.
4448 ワード
プロジェクトの背景:
1、公式サイトは改版が必要で、nodejs nuxtフレームを使って再構築します.
2、公式サイトの改版は全部完成していませんが、オンラインのトップページが必要です.
プロジェクトの需要:
1、トップページの内容を新しい項目として表示させる
2、古い公式サイトの内容を訪問することができます.
3、トップページのドメイン名はwww.n.comでなければなりません.
このようにすれば、いくつかの問題を引き出します.例えば、私のnginx配置の後端は現在7100ポートですが、新しいプロジェクトのポートは3000です.もし私が直接にlocation/port:3000を交替すれば、きっと古い公式サイトのプロジェクト404に変えられます.
旧公式サイトのnginxの設定は以下の通りです.
解決プロセス:
nginxから始めて、最初に試したのはもう一つのレイヤーを書くことです.locatin=/ prot=3000 location/port=7100
このように解決するのは比較的に便利な解決策で、まず3000ポートにマッチングし、3000ポートがマッチングしないと7100ポートに行きます.配置ファイルは以下の通りです.
このプラグインはデッドドメインを書く必要があります.私が書いたのはwww.n.comです.彼はdnsでwww.n.comがあるかどうか検索してみます.見つけたら、自分のnodeプロセスにもマッチして、やっとアクセスできます.そうでなければ、エラーを報告します.
したがって、このようなLocation優先度の設定に基づいて、私がLocation=/port=3000というモードを書いたら、バックエンドのnodeが直接に切られます.つまり、会報404はページにアクセスできません.
このような方法はnuxtフレームでは実現できません.
この時は第二の解決策が必要です.
inxが404にマッチングすると、自動的に古い公式サイトで検索します.もし検索されたら、結果が返ってきます.
以下のように設定します
def ver_keys=''bash'-','curl'http://oss.niu.local/tar/prod/shop-api/sydney/sydney.list |head-n 20']ver_keys.execute().text.tokenize(')
転載先:https://www.cnblogs.com/howtobuildjenkins/p/10978875.html
1、公式サイトは改版が必要で、nodejs nuxtフレームを使って再構築します.
2、公式サイトの改版は全部完成していませんが、オンラインのトップページが必要です.
プロジェクトの需要:
1、トップページの内容を新しい項目として表示させる
2、古い公式サイトの内容を訪問することができます.
3、トップページのドメイン名はwww.n.comでなければなりません.
このようにすれば、いくつかの問題を引き出します.例えば、私のnginx配置の後端は現在7100ポートですが、新しいプロジェクトのポートは3000です.もし私が直接にlocation/port:3000を交替すれば、きっと古い公式サイトのプロジェクト404に変えられます.
旧公式サイトのnginxの設定は以下の通りです.
server {
listen 80;
listen 443 ssl;
server_name www.n.com
include ssl/niu.com;
include error/40x;
include error/50x;
location / {
proxy_pass http://127.0.0.1:7100;
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Credentials' 'true';
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
解決プロセス:
nginxから始めて、最初に試したのはもう一つのレイヤーを書くことです.locatin=/ prot=3000 location/port=7100
このように解決するのは比較的に便利な解決策で、まず3000ポートにマッチングし、3000ポートがマッチングしないと7100ポートに行きます.配置ファイルは以下の通りです.
server {
listen 80;
listen 443 ssl;
server_name www.n.com
include ssl/niu.com;
include error/40x;
include error/50x;
location = / {
proxy_pass http://127.0.0.1:3000;
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Credentials' 'true';
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
location / {
proxy_pass http://127.0.0.1:7100;
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Credentials' 'true';
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
でも!このような解決策は配置に成功しましたが、私の先端はnuxtフレームを使っていますので、このフレームには比較的穴のあるaxiosプラグインがあります.このプラグインはデッドドメインを書く必要があります.私が書いたのはwww.n.comです.彼はdnsでwww.n.comがあるかどうか検索してみます.見つけたら、自分のnodeプロセスにもマッチして、やっとアクセスできます.そうでなければ、エラーを報告します.
したがって、このようなLocation優先度の設定に基づいて、私がLocation=/port=3000というモードを書いたら、バックエンドのnodeが直接に切られます.つまり、会報404はページにアクセスできません.
このような方法はnuxtフレームでは実現できません.
この時は第二の解決策が必要です.
inxが404にマッチングすると、自動的に古い公式サイトで検索します.もし検索されたら、結果が返ってきます.
以下のように設定します
location / {
proxy_pass http://127.0.0.1:3000;
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Credentials' 'true';
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
# , 2019.06.02
error_page 404 = @old_niu;
}
# , 2019.06.02
location @old_niu{
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:7100;
#
}
このように、まず新しい公式サイトに行ってマッチングして、404を間違えたら古い公式サイトに行っても解決策を計算します.def ver_keys=''bash'-','curl'http://oss.niu.local/tar/prod/shop-api/sydney/sydney.list |head-n 20']ver_keys.execute().text.tokenize(')
転載先:https://www.cnblogs.com/howtobuildjenkins/p/10978875.html