これらの実用的なベストプラクティスのnginxのライン

中小企業が、しかし、時間をかけて、生産ラインの複雑さの様々なニーズが徐々にリフトを増やします。もともと限り、クロスドメインのエージェントとしての問題を解決するためのオンラインプロジェクトは現在、問題を解決する可能性があります。そこには、操作およびメンテナンスされていないか、第三者をサポートする場合、nginxのは、私たちの普遍的なフロントエンドでドッキングされます。また、フロントエンドは、それを保持することができるようになっています。

nginxのベース、参照することができますhttp://eminoda.github.io/2018/08/10/nginx-basic-learn/

エラー歓迎し、問題があればここで使用するためのいくつかのアイデアは、あります

APIインタフェースの統一エージェント

例えば、フロントエンドを統一し、より良いインタフェースを管理するために、3000個のノードクラウドサービスポートがある/ APIインタフェースプレフィックスとして。

http://test.eminoda.com:81/api/getUsers => http://127.0.0.1:3000/getUsers

1 
2
3
4
5
6
場所^〜/ API / { 
proxy_set_headerホスト$ホスト;
proxy_set_headerのX-転送-のために$ proxy_add_x_forwarded_for。
proxy_set_header X-実IP $ REMOTE_ADDR。
proxy_pass http://127.0.0.1:3000/。
}

サフィックスの試合は、古いビジネス.doという、.actionインタフェース/ページを解決します

1 
2
3
4
5
6
場所〜* /*.do$ { 
proxy_set_headerホスト$ホスト;
proxy_set_headerのX-転送-のために$ proxy_add_x_forwarded_for。
proxy_set_header X-実IP $ REMOTE_ADDR。
proxy_pass http://127.0.0.1:8080。
}

独自のドメインを指定します

あなたは限り雲がパンの解像度を行ったように、複数のサブドメインを開くことができます。

例えば、統合アクセス完了インターフェース

1 
2
3
4
5
6
7
8
9
10
11
サーバー{ 
80を聞きます。
SERVER_NAME api.eminoda.com;

位置/ {
proxy_set_headerホスト$ホスト。
proxy_set_headerのX-転送-のために$ proxy_add_x_forwarded_for。
proxy_set_header X-実IP $ REMOTE_ADDR。
proxy_pass http://127.0.0.1:3000。
}
}

終了ページを移動

1 
2
3
4
5
6
サーバー{ 
80を聞きます。
SERVER_NAME h5.eminoda.com;

...
}

デフォルトのドメイン名を指定してください

nginxのは、通常、複数のサーバー名に維持され、ホストアクセスが存在しませんが、サーバーのIPが解決されたとき、nginxの与えられたデフォルトリクエストのドメイン名(コンフィギュレーションファイルに従ってソートすることができるような)そのメカニズムに基づい

使用DEFAULT_SERVERデフォルトのサーバーを指定します

1 
2
3
4
5
サーバー{ 
80 DEFAULT_SERVERを聞きます。
SERVER_NAME www.niu100.com;
...
}

ログ管理

nginxのをインストールした後、デフォルトの設定があるでしょう。

1 
2
3
4
5
6
HTTP { 
LOG_FORMAT主'$ REMOTE_ADDR - $ REMOTE_USER [$ time_local "$要求"'
'$ステータス$ body_bytes_sent "$ HTTP_REFERER"'
' "$ HTTP_USER_AGENT" "$ HTTP_X_FORWARDED_FOR"';
/var/log/nginx/access.logメインのaccess_log。
}

具体的なデータ解析は非常に基本的なことに、バックトラッキングの問題として、存在しない場合。

1
114.34.159.157  -   -  [18/10月/ 2018:13:28:37 0800] "GET / HTTP / 1.1" 403 571 " - " の「Mozilla / 5.0(のWindows NT 6.1; WOW64)のAppleWebKit / 537.36(KHTML、等Gecko)クローム/ 51.0.2704.103サファリ/ 537.36" " - "

いくつかの特定のデータがマーキング場合でも、要件を追跡するには、次の構成を参照することができます:

クッキーのビジネス情報を入手

1 
2
3
4
セット$ユーザーID " - "; 
($ HTTP_COOKIE〜* "のuserId =(S +)(; * | $)")の場合{
セット$ユーザーID $ 1;
}

爬虫類の要求確認、あなたは、このような統計情報を持っている場合、ソ

1 
2
3
4
; - "" $クモを設定 
($ HTTP_USER_AGENT〜* "|のGooglebot | Baiduspider Sosospider")の場合{
セット$スパイダー"1";
}

設定したロガー形式、出力位置

1 
2
3
4
5
LOG_FORMATのeminoda '$ REMOTE_ADDR $ HTTP_X_FORWARDED_FOR - [$ time_local]' 
'$要求$ステータスの$ body_bytes_sentます$ REQUEST_TIME'
'$ userIdを$ HTTP_USER_AGENT $クモ';

access_logの/var/log/nginx/my-access.log eminoda。

nginxのファイルを仕上げ

nginx 是一个 http 服务,里面包含多个 server,当项目复杂起来,一定会造成杂乱的配置。这时需要一定的 整理,方便日后修改。根据个人习惯吧

不同 server

1
2
3
4
5
6
http {
include /etc/nginx/server/api.eminoda.conf;
include /etc/nginx/server/static.emionda.conf;
include /etc/nginx/server/eminoda.*.conf;
...
}

相同配置抽取

1
2
3
4
5
6
7
8
9
10
11
12
13
server {
listen 80 default_server;
server_name www.eminoda.com;

# ip拦截
include /etc/nginx/conf/ipLimit.conf;
# 业务信息打标
include /etc/nginx/conf/bussMark.conf;
# 接口代理代理
include /etc/nginx/conf/proxy_A.conf;
include /etc/nginx/conf/proxy_B.conf;
...
}

配置 SSL——https

市面上有很多免费的证书提供商,以下给出阿里云的默认配置

https://www.eminoda.com

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
server {
listen 443;
server_name www.eminoda.com;
ssl on;
ssl_certificate cert-eminoda/123.pem;
ssl_certificate_key cert-eminoda/123.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;


location / {
...
}
}

自动跳转 https 站点

google 对 https 站的 seo 会更好,像安全性等好处这里不做展开

1
2
3
4
5
6
7
8
9
10
11
12
server {
listen 80;
server_name www.eminoda.com;

location / {
proxy_set_header Host $http_host;
proxy_set_header host $host;
proxy_set_header X-forwarded-for $proxy_add_x_forwarded_for;
proxy_set_header X-real-ip $remote_addr;
rewrite ^/(.*) https://www.eminoda.com/$1 permanent;
}
}

多端的适配

实现在移动端访问 PC 页面,重定向到手机页面

1
2
3
if ($http_user_agent ~* "(Mobile|Android|iPad|iPhone|iPod|BlackBerry|Windows Phone)") {
rewrite ^/ http://h5.eminoda.com redirect;
}

IP 限制

1
2
3
if ( $http_x_forwarded_for ~ "106.120.121.128$|106.120.121.129$|106.120.121.1[3-5][0-9]$") {
rewrite ^/ http://limit.eminoda.com/limit.html rewrite;
}

短连接

可能因为短信运营商的字符数量限制、业务需要,要尽可能缩短链接长度。

http://l.em.com/123456789/987654321 ==> http://www.eminoda.com/aaa/bbb/123456789?id=987654321

1 
2
3
4
5
サーバー{ 
80を聞きます。
SERVER_NAME l.em.com;
^ /(D +)/(D +)のhttp://www.eminoda.com/aaa/bbb/$1?id=$2書き換え書き換え。
}

指定された例外のエラーページ

サーバーのダウンタイム、出版、Webページやその他の要因のタイムアウト、デフォルトnginxのエラー・ページ、ユーザーが疑問を生成することができるように。あなたは経験を強化するため、エラーページを指定する必要があります。

1 
2
3
error_page 404 = http://m.eminoda.com/404。
error_page 405 = http://m.eminoda.com/405。
error_page 500 = http://m.eminoda.com/500。

オリジナル:ビッグボックスは、  ベストプラクティスのそれらの実用的なラインをnginxの


おすすめ

転載: www.cnblogs.com/wangziqiang123/p/11618164.html