この記事では主に Nginx に関する実践を紹介します。これを必要とする友人に共有します
1. 動的リソースと静的リソース。リソース
クライアントによって要求されたページが静的 Web ページの場合、サーバーは静的 Web ページのコンテンツをクライアントに直接応答します。クライアントが動的 Web ページをリクエストした場合、サーバーはまず動的 Web ページを静的 Web ページに置き換えてから、変換された静的 Web ページにクライアントに応答する必要があります
数種類の静的リソース
ブラウザのレンダリング: HTML、CSS、JAVASCRIPT 写真: JPEG、GIF、PNG... ビデオ: FLV、MPEG... ファイル: TXTなど、任意のダウンロードファイル 2 , CDN(Content Delivery Network)コンテンツ配信ネットワーク
基本的な考え方は、データ伝送の速度と安定性に影響を与える可能性のあるインターネット上のボトルネックやリンクを可能な限り回避し、コンテンツ伝送をより速く、より安定させることです。 CDN システムは、ネットワーク全体にノード サーバーを配置して、既存のインターネットに基づいたインテリジェントな仮想ネットワークの層を形成することで、ネットワーク トラフィック、各ノードの接続と負荷の状態、およびユーザーまでの距離をリアルタイムで分析できます。ユーザーのリクエストをユーザーに最も近いサービス ノードにリダイレクトするための応答時間などの包括的な情報。その目的は、ユーザーが必要なコンテンツを近くで入手できるようにし、インターネットネットワークの混雑状況を解消し、ユーザーのウェブサイトへのアクセスの応答速度を向上させることです。
3. 設定構文
sendfile (ファイル読み取り)
設定構文: sendfile on|off; デフォルト: なし コンテキスト: http、サーバー、場所 (場所にある場合)
tcp_nopush (sendfileがオンになっている場合のネットワークパケットの送信効率を向上させます)
設定構文: tcp_nopush on|off; デフォルト: なし コンテキスト: http、サーバー、 location
tcp_nolay (キープアライブ接続下で、ネットワークパケットのリアルタイム送信を改善します)
設定構文: tcp_nodely on|off; デフォルト: None Conテキスト: http、サーバー、Locationigzip (圧縮)
設定文法: gzip オン | オフ
デフォルト: いいえ
-
コンテキスト: http、サーバー、ローカルの場合
gizp_comp_level (圧縮率) -
- 設定構文: gzip_comp_level レベル;
デフォルト: なし;
コンテキスト: http、サーバー、場所
-
gzip_http_version(gzip_comp_level) p)
-
設定構文: gzip_http_version 1.0|1.1; デフォルト: なし
コンテキスト: http、サーバー、場所
-
gzip_static (先読みgzip関数)
-
設定構文: gzip_static on|オフ|常に; デフォルト: gzip_static off;
コンテキスト: http、サーバー、場所
-
4. ブラウザキャッシュ
- HTTP プロトコルによって定義されたキャッシュメカニズム (有効期限、キャッシュ制御など) .)
- ブラウザキャッシュなし:
ブラウザリクエスト→キャッシュなし→WEBサーバーリクエスト→リクエスト応答、ネゴシエート→提示
クライアントはキャッシュあり
ブラウザリクエスト→キャッシュ→有効期限の検証 → 提示
検証有効期限の仕組み
有効期限が切れているかどうかを検証
Expires,年齢) |
プロトコル内のEtagヘッダー情報検証 |
Etag
Last-Modifiedには情報検証があります |
Last-Modified |
5、クロスサイトアクセス
方法Nginx はクロスサイト アクセスを可能にしますか? Access-Controller-Allow-Origin
name は、Access-Controller-Allow-Origin および Access-Controller-Allow-Method にすることができます
6. アンチホットリンク
http_refer アンチホットリンク構成モジュールに基づく
valid_referers none blocked IP
if($invalid_referer) {
return 403;
} ログイン後にコピー リマインダー: 構成された反リーチングをテストするには、curl を使用できます: curl -e "http:www.baidu.com" -I IP
2プロキシとしての Nginx サービスフォワードプロキシ リバースプロキシ proxy_pass 他のプロキシの構文補足: - proxy_buffering(buffer)
構文設定: proxy_buffering on | off デフォルト: なし; コンテキスト: http、サーバー、場所-
拡張機能: proxy_buffer_size、 proxy_buffers、proxy_busy_buffers_size proxy_redirect(jump Redirect) 設定構文: proxy_redirect デフォルト;proxy_redirect オフ;proxy_redirect リダイレクトの置換; デフォルト: none コンテキスト: http、サーバー、場所-
proxy_set_header (ヘッダー情報)-
設定構文: proxy_set_header ファイル値; デフォルト: proxy_set_header ホスト $proxy_host;proxy_set_header 接続終了; コンテキスト: http、サーバー、場所-
拡張子: proxy_hide_header 、 proxy_set_body proxy_connect_timeout (タイムアウト) 設定構文: proxy_connect_timeout time; デフォルト: なし コンテキスト: http、サーバー、場所 拡張子: proxy_read_timeout、proxy_send _timeout 設定ファイル 例:
proxy_pass http://127.0.0.1:8080;
proxy_redirect default;
proxy_set_header HOST $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_connect_timeout 30;
proxy_send_timeout 60;
proxy_read_timeout 60;
proxy_buffer_size 32k;
proxy_buffering on;
proxy_buffers 4 128k;
proxy_busy_buffers_size 256k;
proxy_max_temp_file_size 256k; ログイン後にコピー 3. 負荷分散サービスとしての Nginx 負荷分散: 既存のネットワーク構造上に構築されており、安価で効果的かつ透過的な拡張方法を提供します。ネットワーク デバイスとサーバーの帯域幅を拡張し、スループット容量を向上させ、ネットワーク データ処理機能を強化し、ネットワークの柔軟性と可用性を向上させます。 負荷分散 (英語名は Load Balance) は、作業タスクを共同で完了するために、Web サーバー、FTP サーバー、エンタープライズ キー アプリケーション サーバー、その他のミッションクリティカルなサーバーなどの複数のオペレーティング ユニットに実行を割り当てることを意味します。
- アップストリーム语 設定文法: アップストリーム名 {...}
デフォルト: いいえ コンテキスト: HTTP 簡単な設定例 : upstream ronaldo {
server ip:port [param];
server ip:port [param];
server ip:port [param];
}
server {
location / {
proxy_pass http://ronaldo;
}
} ログイン後にコピー param参数解释:param | 意义 |
---|
down | 当前的server暂时不参与负载均衡 | weight=num | 权重,num越大,轮询到的概率越大 | backup | 预留的备份服务器 | max_fails | 允许请求失败的次数 | fail_timeout | 经过max_fails失败后,服务暂停的时间(默认是10s) | max_conns | 限制最大的接收的连接数 |
调度算法:算法 | 意义 |
---|
轮询 | 按时间顺序逐一分配到不同的后端服务器 | 加权轮询 | weight值越大,分配到的访问几率越高 | ip_hash | 每个请求按访问IP的hash结果分配,这样来自同一个IP就固定访问同一个后端服务器 | least_conn | 最少连接数,哪个服务器连接数少就分发 | url_hash | 按照访问的URL的hash结果来分配请求,是每个URL定向到同一个后端服务器 | hash关键字值 | hash自定义的key |
ip_hash: url_hash(1.7.2版本以后可用):
key可以是$request_uri,根据url进行hash 四、Nginx作为缓存服务1、缓存的类型服务端缓存。例:memcache、reids 代理缓存。例:Nginx缓存服务端的数据 客户端缓存。
2、常用缓存配置常见配置: proxy_cache_path cache_path levels=1:2 keys_zone=key_name:10m max_size=10g inactive=60m use_temp_path=off;
server {
loaction / {
proxy_pass http://ronaldo;
proxy_cache key_name;
proxy_cache_valid 200 304 12h;
proxy_cache_valid any 10m;
proxy_cache_key $host$uri$is_args$args;
add_header Nginx-Cache "$upstream_cache_status";
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
}
} ログイン後にコピー 2、清除指定缓存rm -rf 缓存目录内容 第三方扩展模块:ngx_cache_purge
3、如何让部分页面不缓存简单示例 if ($request_uri ~ ^/(url_3|login|register|password\/reset)) {
set $cookie_nocache 1;
}
location / {
proxy_no_cache $cookie_nocache;
} ログイン後にコピー 4、大文件分片请求
优势:每个子请求收到的数据都会形成一个独立的文件,一个请求断了,其他请求不受影响。 缺点:当文件很大或者slice很小的时候,可能会导致文件描述符耗尽等待情况。
相关推荐:
关于Nginx的基础内容
Nginx编译安装Lua模块
|
以上がNginxシナリオの練習の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。