構成:
conf / nginx.conf
##グローバル構成セクション
usernobody;#ワーカープロセスのユーザー、ルート
worker_processes1を使用しないようにしてください;#ワーカープロセスの数、cpuコアの数
以下error_log logs / error.log info; #error log and Level
## eventConfiguration section
events { worker_connections 1024; use epoll ; } ## httpConfiguration section http { include mime.types ; default_type application / octet-stream; sendfile on;
keepalive_timeout 65;
server_tokens off ; #非表示バージョンの
アップストリームTomcat { サーバーlocalhost:8080; #アップストリームサーバーの定義 } #サーバー構成セクション サーバー{ リッスン80;サーバー 名 192.168.80.172; 場所/ { プロキシパスhttp:// tomcat / ppw /;リバースプロキシ、ここにパスを記述します } error_page 500 502 503 504 /50x.html; location = /50x.html {
root html;
}
}
}
バックエンドサーバーのマスターとバックアップの構成:
アップストリームテスト{ サーバー192.168.80.172:8080; サーバー192.168.80.172:8081バックアップ; }
注:同じドメイン名のサーバーホストがない場合は、ポート要件を満たす最初のホストが見つかります
アクセス制御:
http、サーバー、場所などに配置できます
。192.168.80.0/ 24を許可
し、すべてを拒否します。
ディレクトリマッピング: #global
configuration
root html;
location / { #proxy_pass http:// test; index index.html index.htm;
}
location / aa {#Access xxx.com/a-> html / aa / index.html
index index.html;
} #
個別に構成:
location / { #proxy_pass http:// test; root html; index index.html index.htm;
}
location / bb { root html / aa; #Visit xxx.com/bb-> html / aa / bb / index.html、実際には/ bbをルートパス インデックスindex.htmlに追加します; }
リバースプロキシ:
アップストリームapiServer { サーバー10.10.10.10:8888 ... } サーバー{ ... 場所/ api { proxy_pass http:// apiServer; proxy_cookie_domain apiServer a.test.com;#応答セットを置き換える-cookieヘッダードメイン属性 #Syntax:proxy_set_headerフィールド値; #field:変更される項目であり、ホストなどの変数の名前としても理解できます #value:は変数 proxy_set_headerの値ですhost $ host;#デフォルト値は$ proxy_hostで、ヘッダーを変更します。ホストフィールドはバックエンド実サーバーのIPであり、$ hostと$ http_hostは同じであり、要求の元のホストを表す1つだけを書き込むことができます。
proxy_set_header X-Real-IP $ remote_addr;# "$ http_x_real_ip"、この変数の値を追加
proxy_set_header X-Forwarded-For $ proxy_add_x_forwarded_for;#$ http_x_forwarded_forの値を "$ remote_addr、last hop ip"に変更
#使用プロキシが受信するリモートクライアントIPを設定します。設定されていない場合、リモート実クライアントのIPアドレスはヘッダー情報で透過的に送信されません。
}
...
}
url / problem
nginxでproxy_passを構成するときに、絶対ルートパスに相当する/がURLビハインドに追加されると、nginxは場所が一致するパス部分をプロキシしません。/がない場合、次に、一致したパス部分もエージェントに渡されます。
1. proxy_passのターゲットアドレス(デフォルトでは/なし)は、プロキシドメイン名のみを意味し、URLとパラメーターは変更されません(プロキシURLとしてproxy_passターゲットドメイン名への要求されたパスをスプライスします)
2。/を追加した場合ターゲットアドレスの後、場所に正常に一致するパスの部分が切り取られ、proxy_passターゲットアドレスにスプライスされることを意味します
次の4つの状況で、それぞれhttp://192.168.1.4/proxy/test.htmlにアクセスします。
最初のタイプ:
location / proxy / { proxy_pass http://127.0.0.1:81/; } はhttp://127.0.0.1:81/test.html this urlにプロキシされます 2番目のタイプ(最初のタイプと比較して、最後のものがあり ません/) location / proxy / { proxy_pass http://127.0.0.1:81; } はhttp://127.0.0.1:81/proxy/test.htmlにプロキシされますこのURLは 3番目のタイプです: location / proxy / { proxy_passhttp://127.0.0.1:81 / ftlynx / ; } はURLhttp://127.0.0.1:81 / ftlynx / test.htmlにプロキシされます。 4番目のケース(3番目のケースと比較して、最後のケースが欠落しています/):
場所/ proxy / { proxy_pass http://127.0.0.1:81/ftlynx; } はhttp://127.0.0.1:81/ftlynxtest.htmlにプロキシされますこの urlnginx_upstream_check_module(nginxステータスページ)インストール: 1 unzip nginx_upstream_check_module- master.zip 2 nginxソースディレクトリに入り、patchコマンドを使用してソースファイルに パッチを適用しますpatch -p1 </root/smb/software/nginx/nginx_upstream_check_module-master/check_1.16.1+.patch 3nginxを コンパイルします 。/configure- -prefix = ./nginx --add-module = ../ nginx_upstream_check_module-master --with-http_ssl_module次の エラーが わずかに報告されています:OpenSSLライブラリが使用されていません
--with-http_ssl_module4
配置nginx.conf
アップストリームtest111 { サーバー172.17.1.1; サーバー172.17.3.164:8080; チェック間隔= 2000上昇= 2下降= 2タイムアウト= 1000タイプ= http; #check_http_send "HEAD / HTTP / 1.0 \ r \ n \ r \ n"; #check_http_expect_alive http_2xx http_3xx http_4xx; } -------- サーバー{ リッスン80; server_name localhost; 場所/ { proxy_pass http:// test111;
}
location / status { check_status; access_log off; } ..... 書き換え:たとえば 、URLをリダイレクトしてプロキシを複数の kibanaアップストリームkibanaServerに リダイレクトします{ ip_hash; #same ip、固定バックエンド kibanaサーバーへの負荷分散10.78 .228.162:5601 ; サーバー10.78.228.163:5601; サーバー10.78.228.164:5601; チェック間隔= 5000上昇= 1下降= 3タイムアウト= 4000; }
server { ... location〜 / elk { rewrite ^ /。* / kibana last; } location / kibana / { proxy_pass http:// kibanaServer; } } server_name: nginxはhttpヘッダー内のホストを解析し、一致するserver_nameを見つけますそうでない場合は、デフォルトまたは最初のものを使用します
例:IPアクセスを禁止する:
server { listen 80; server_name _; return 404; } server { listen 80; server_name www.hello.com; }
IPでアクセスする場合、一致するサーバーが存在しない場合、それは最初のサーバに一致し、404を返す
ファイルサーバーを:
nginx.confのHTTP {}文脈では、追加
でのautoindex;#ショーのディレクトリ
autoindex_exact_size上;#ショー・ファイルのサイズ
autoindex_localtime on;#ファイル時間を表示する
パスを指定します:
location〜 / files { access_log off; #root / tmp; alias / tmp /; } httpd実装:add <Directory " /home/wwwroot/rpms">/etc/httpd/conf/httpd.conf インデックスのオプションMultiViews FollowSymLinks AllowOverride None Order allow、deny Allow from all </ Directory> pythonimplementation (single thread):python3 -m http.server 88
ログイン検証を追加します:
location / { proxy_pass http://127.0.0.1:5601$request_uri;
auth_basic "ログイン検証";
auth_basic_user_file / etc / nginx / htpasswd;
}
$ request_uri#リクエストパラメータを含む元のURIには、「/ foo / bar.php?arg = baz」などのホスト名は含まれていません。変更できません。
パスワードの生成:
htpasswd -c -b / etc / nginx / htpasswd kibana kibana
-c:暗号化されたファイルを作成します-b:プロンプトに従ってパスワードを入力する代わりに、コマンドラインでユーザー名とパスワードを一緒に入力します。パスワードは次のとおりです。
apr1を使用して暗号化
パスワードファイルのアクセス許可を変更することに注意してください:
chmod 600
htpasswdchownnobody。htpasswd