目次
基础指令" >基础指令
LVS Nginx が必要な理由は何ですか? " >LVS Nginx が必要な理由は何ですか?
ホームページ 運用・保守 Nginx 1 つの小さな画像ですべての Nginx を表示

1 つの小さな画像ですべての Nginx を表示

Aug 02, 2023 pm 05:28 PM
nginx


1 つの小さな画像ですべての Nginx を表示


1 つの小さな画像ですべての Nginx を表示

#nginx のインストール

Nginx のインストールが完了しました。sbin ディレクトリはありません。

cd で nginx-1.18.0 ディレクトリに移動し、

[root@centos7 nginx-1.18.0]# ./configure --prefix=/usr/local/nginx[root@centos7 nginx-1.18.0]# make[root@centos7 nginx-1.18.0]# make install
ログイン後にコピー
を実行します。

ps: –prefix=path は、サーバー上にファイルを保存するディレクトリ (nginx のインストール ディレクトリ) を定義します。デフォルトでは、/usr/local/nginx

#ローカルディレクトリにインストールしたnginx1.12.2と同じ階層にnginxディレクトリがあり、その中にsbinディレクトリがあることがわかります。

基础指令

listen:该指令用于配置网络监听。

listen *:80 | *:8080      #监听所有80端口和8080端口listen  IP_address:port   #监听指定的地址和端口号listen  IP_address        #监听指定ip地址所有端口listen port               #监听该端口的所有IP连接
ログイン後にコピー

server_name:该指令用于虚拟主机的配置。

a. 基于名称的虚拟主机配置

server_name   name ...;
ログイン後にコピー

b. 基于 IP 地址的虚拟主机配置

server_name 192.168.1.1
ログイン後にコピー

location:该指令用于匹配 URL。

location指令的作用是根据用户请求的URI来执行不同的应用,也就是根据用户请求的网站URL进行匹配,匹配成功即进行相关的操作。

牛逼啊!接私活必备的 N 个开源项目!赶快收藏吧
ログイン後にコピー

location的语法

  • =开头表示精确匹配

  • 如 A 中只匹配根目录结尾的请求,后面不能带任何字符串。

  • ^~ 开头表示uri以某个常规字符串开头,不是正则匹配

  • ~ 开头表示区分大小写的正则匹配;

  • ~* 开头表示不区分大小写的正则匹配

  • / 通用匹配, 如果没有其它匹配,任何请求都会匹配到

Location正则案例

#精确匹配,/后面不能带任何字符
server {
        listen       80;
        server_name  www.itmayiedu.com;
        #精确匹配,注解后面不能带任何字符
        location =/ {
            proxy_pass http://127.0.0.1:8080;
            index  index.html index.htm;
        }
}

 #匹配所有以/开头请求
server {
        listen       80;
        server_name  www.itmayiedu.com;
       #匹配所有以/开头请求 
        location / {
            proxy_pass http://127.0.0.1:8080;
            index  index.html index.htm;
        }
    }
###  以开头/itmayiedu_8080拦截  默认开启不区分大小写
    server {
        listen       80;
        server_name  www.itmayiedu.com;
        ###  以开头/itmayiedu_8080 最终跳转到http://127.0.0.1:8080/;
        location /itmayiedu_8080/ {
            proxy_pass http://127.0.0.1:8080/;
            index  index.html index.htm;
        }
        ###  以开头/itmayiedu_8080 最终跳转到http://127.0.0.1:8081/;
        location /itmayiedu_8081/ {
            proxy_pass http://127.0.0.1:8081/;
            index  index.html index.htm;
        }
    }
### 开头区分大小写
ログイン後にコピー

proxy_pass:该指令用于设置被代理服务器的地址。可以是主机名称、IP地址加端口号的形式。

语法结构如下:

proxy_pass URL;
ログイン後にコピー

index:该指令用于设置网站的默认首页。

域名重定向

server
{
    listen 80 ;
    server_name mxiaoqi.top aaa.com;
    if ( $host = mxiaoqi.top )
    #增加判断条件,当访问域名是mxiaoqi.top的时候
    {
        rewrite /(.*)  http://aaa.com/$1 permanent;
        #把mxiaoqi.top/后面的内容重新写到aaa.com/后面如果后面有多段则使用$2、$3以此类推
        #permanent是转发状态码
    }
    index index.html index.htm index.php;
    root /data/wwwroot/mxiaoqi.top;
    }
ログイン後にコピー

反向代理

使用 nginx 反向代理 www.123.com 直接跳转到127.0.0.1:8080

server {
         listen       80;
         server_name  www.123.com;

         location / {
             proxy_pass http://127.0.0.1:8080;
                          # 欢迎页面,按照从左到右的顺序查找页面
             index  index.html index.htm index.jsp;
         }
     }
ログイン後にコピー

监听80端口,访问域名为www.123.com,不加端口号时默认为80端口,故访问该域名时会跳转到127.0.0.1:8080路径上。

限流配置

漏桶算法与令牌桶算法区别:主要区别在于“漏桶算法”能够强行限制数据的传输速率,

而“令牌桶算法”在能够限制数据的平均传输速率外,还允许某种程度的突发传输。在“令牌桶算法”中,只要令牌桶中存在令牌,那么就允许突发地传输数据直到达到用户配置的门限,因此它适合于具有突发特性的流量。

Nginx按请求速率限速模块使用的是漏桶算法,即能够强行保证请求的实时处理速度不会超过设置的阈值。

  • limit_req_zone 用来限制单位时间内的请求数,即速率限制,采用的漏桶算法 "leaky bucket"。

  • limit_req_conn 用来限制同一时间连接数,即并发限制。

limit_req_zone 参数配置

Syntax:    limit_req zone=name [burst=number] [nodelay];
Default:    —
Context:    http, server, location
ログイン後にコピー

limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;

  • 第一个参数:<span style="margin: 0px;padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;word-wrap: break-word !important;font-size: 15px;">$binary_remote_addr</span>表示通过remote_addr这个标识来做限制,“binary_”的目的是缩写内存占用量,是限制同一客户端ip地址。

  • 第二个参数:zone=one:10m表示生成一个大小为10M,名字为one的内存区域,用来存储访问的频次信息。

  • 第三个参数:rate=1r/s表示允许相同标识的客户端的访问频次,这里限制的是每秒1次,还可以有比如30r/m的。

limit_req zone=one burst=5 nodelay;

  • 第一个参数:zone=one 设置使用哪个配置区域来做限制,与上面limit_req_zone 里的name对应。

  • 第二个参数:burst=5,重点说明一下这个配置,burst爆发的意思,这个配置的意思是设置一个大小为5的缓冲区当有大量请求(爆发)过来时,超过了访问频次限制的请求可以先放到这个缓冲区内。

  • 第三个参数:nodelay,如果设置,超过访问频次而且缓冲区也满了的时候就会直接返回503,如果没有设置,则所有请求会等待排队。

ngx_http_limit_conn_module 参数配置

这个模块用来限制单个IP的请求数。并非所有的连接都被计数。只有在服务器处理了请求并且已经读取了整个请求头时,连接才被计数。

Syntax:    limit_conn zone number;
Default:    —
Context:    http, server, location

limit_conn_zone $binary_remote_addr zone=addr:10m;
server {
    location /download/ {
        limit_conn addr 1;
    }
ログイン後にコピー

一次只允许每个IP地址一个连接。

负载均衡

#user  nobody;
worker_processes  1;
error_log  logs/error.log;# 开启日志
pid        logs/nginx.pid;
...
    upstream lyf {
    server 192.168.37.220:8001; # 3个tomcat服务
    server 192.168.37.220:8002;
    server 192.168.37.220:8003;
    }
    server {
        listen       80;
        server_name  192.168.37.220;# 监听ip
        location / {
            proxy_pass   http://lyf;  # 设置代理
            index  index.html index.htm;
        }
}
ログイン後にコピー

keepalive 长连接提高吞吐量
keepalived :设置长连接处理的数量
proxy_http_version :设置长连接http版本为1.1
proxy_set_header :清除connection header 信息

upstream tomcats { 
# server 192.168.1.173:8080 max_fails=2 fail_timeout=1s; 
server 192.168.1.190:8080; 
# server 192.168.1.174:8080 weight=1; 
# server 192.168.1.175:8080 weight=1; 
keepalive 32; 
}
server {
listen 80; 
server_name www.tomcats.com; 
location / { 
proxy_pass http://tomcats; 
proxy_http_version 1.1; 
proxy_set_header Connection ""; 
} 
}
ログイン後にコピー

工作方式

轮询方式是Nginx负载默认的方式

权重方式 指定每个服务的权重比例,weight和访问比率成正比

upstream  dalaoyang-server {
       server    localhost:10001 weight=1;
       server    localhost:10002 weight=2;
}
ログイン後にコピー

iphash

每个请求都根据访问ip的hash结果分配,经过这样的处理,每个访客固定访问一个后端服务,如下配置(ip_hash可以和weight配合使用)。

upstream  dalaoyang-server {
       ip_hash; 
       server    localhost:10001 weight=1;
       server    localhost:10002 weight=2;
}
ログイン後にコピー

最少连接

将请求分配到连接数最少的服务上。

upstream  dalaoyang-server {
       least_conn;
       server    localhost:10001 weight=1;
       server    localhost:10002 weight=2;
}
ログイン後にコピー

fair

按后端服务器的响应时间来分配请求,响应时间短的优先分配。

upstream  dalaoyang-server {
       server    localhost:10001 weight=1;
       server    localhost:10002 weight=2;
       fair;  
}
ログイン後にコピー

Consul+upsync+Nginx 实现无需raload动态负载均衡 https://www.cnblogs.com/a1304908180/p/10697278.html

传统的负载均衡,如果Upstream参数发生变化,每次都需要重新加载nginx.conf文件,

因此扩展性不是很高,所以我们可以采用动态负载均衡,实现Upstream可配置化、动态化,无需人工重新加载nginx.conf。

LVS+Keepalived+Nginx+Tomcat搭建高可用双机主从热备集群

https://blog.csdn.net/dsen726/article/details/89519013

需要明确的是:

  • Nginx两台是主备关系,只有一台在工作。后面的tomcat是集群,同时工作的。

  • keepalived是同时安装在两台Nginx上的,不过文件配置不一样

  • 这里的双机热备是指LVS,Nginx则是集群

keepalived

ヘルス チェックとフェイルオーバーは、keepalived の 2 つの中心機能です。いわゆるヘルスチェックでは、TCP スリーウェイ ハンドシェイク、ICMP リクエスト、HTTP リクエスト、UDP エコー リクエストなどを使用して、ロード バランサの背後にある実際のサーバー (通常は実際のビジネスを実行するサーバー) を存続させますが、スイッチングに失敗した場合は、主にアプリケーション アクティブ モードとスタンバイ モードで構成されたロード バランサの場合、VRRP を使用してアクティブ ロード バランサとスタンバイ ロード バランサのハートビートが維持されます。アクティブ ロード バランサに問題が発生した場合、スタンバイ ロード バランサが対応するサービスを実行して、トラフィックを最小限に抑えます。サービスの安定性を提供します。さらに、公開アカウントを検索するときに、Linux はバックグラウンドで「サル」と返信し、サプライズのギフトパッケージを受け取る方法を学習する必要があります。

LVS とは Linux Virtual Server の略で、Linux 仮想サーバーを意味し、仮想サーバークラスタシステムです。 lvs は現在 Linux に統合されています。

1 つの小さな画像ですべての Nginx を表示

1 つの小さな画像ですべての Nginx を表示

1 つの小さな画像ですべての Nginx を表示#

LVS Nginx が必要な理由は何ですか?

1. ngix (7 層アプリケーション層ネットワーク負荷分散)

1. 非同期転送、リクエスト データおよび対応するデータは通過する必要がありますngix 、ngix はクライアントとの接続を確立します

2.すべての Tomcat サーバーをポーリングして、リクエストが成功したか、最後の Tomcat サーバーがリクエストに失敗したかを確認します

2. lvs (ネットワーク層 4 層ロード バランシング)

1. 同期転送はリクエスト データを受け取り、lvs がそれをサーバーに転送し、サーバーが直接接続を確立します。

nginx はすべてのトラフィックを負担しなければなりません。1 つの nigx が負担できない場合は、nginx クラスターを構築する必要があります。 ngix ngix 外側の ngix は依然としてすべてのトラフィックを処理する必要があります。

lvs ngix:lvs 同期転送は対応するデータを受け入れません。LVS が DR モードを採用すると、サーバーから返されたコンテンツに応答する必要がありません。 (通常、リクエスト データは比較的小さく、応答データは比較的大きくなります)

1 つの小さな画像ですべての Nginx を表示

#

静态资源配置

  location ~ .*\.(jpg|gif|png)$ {
        gzip on;
        gzip_http_version 1.1;
        gzip_comp_level 2;
        gzip_types text/plain application/javascript image/jpeg image/gif image/png;
        root   /usr/share/nginx/images;
    }

    location ~ .*\.(txt|xml)$ {
        gzip on;
        gzip_http_version 1.1;
        gzip_comp_level 1;
        gzip_types text/plain application/javascript image/jpeg image/gif image/png;
        root   /usr/share/nginx/code;
    }
  location ~ ^/download {
        gzip_static on;
        tcp_nopush on;
        root /opt/app/code;
    }
ログイン後にコピー

sendfile on | off,文件读取配置

默认sendfile是关闭的,可以配置在http,server,location,if in location中

tcp_nopush on | off,多个包整合

默认是关闭状态,可以在http,server,location中配置,它的作用是在sendfile开启的情况下,提高网络包的传输效率。什么意思呢,假设服务端收到请求,需要推送10个包,为了提高传输效率,这10个包不会一个一个返回给客户端,而是将10个包攒够了后一起返回回去。

tcp_nodelay on | off,网络包的实时性传输

默认开启,可以在http,server,location中配置,它的作用是在keepalive链接下,提高网络包的传输实时性。

gzip on | off,压缩

默认是关闭状态,可以在http,server,location,if in location中配置,作用是压缩传输。一般来说浏览器是可以对压缩后的内容进行解压的。

gzip_comp_level level;压缩级别

默认的压缩级别是1,可以在http,server,location中配置,级别配置的越高,压缩的越好,但是压缩会耗费服务端的计算资源,所以要控制好压缩级别

gzip_http_version 1.0 | 1.1,压缩对http协议的支持

默认对HTTP/1.1协议的请求才会进行gzip压缩,可以配置在http,server,location中配置。当用户想要读取一个1.html文件,首先会在目录中找寻1.html.gz是否存在,所以这就导致了磁盘资源的浪费,必须要存储两份文件。

###静态资源访问
    server {
      listen       80;
      server_name  static.itmayiedu.com;
      location /static/imgs {
           root F:/;
           index  index.html index.htm;
       }
    }
   ###动态资源访问
     server {
      listen       80;
      server_name  www.itmayiedu.com;

      location / {
         proxy_pass http://127.0.0.1:8080;
         index  index.html index.htm;
       }
    }
ログイン後にコピー

跨域配置

1 つの小さな画像ですべての Nginx を表示

跨域就是在原站点访问域名不同的其他站点,同源策略会阻止一个域的javascript脚本和另外一个域的内容进行交互。所谓同源(即指在同一个域)就是两个页面具有相同的协议(protocol),主机(host)和端口号(port)。

CORS 是跨域资源分享(Cross-Origin Resource Sharing)的缩写。它是 W3C 标准,属于跨源 AJAX 请求的根本解决方法。

1、普通跨域请求:只需服务器端设置Access-Control-Allow-Origin

2、带cookie跨域请求:前后端都需要进行设置

#允许跨域请求的域,*代表所有
add_header &#39;Access-Control-Allow-Origin&#39; *;
#允许带上cookie请求 
add_header &#39;Access-Control-Allow-Credentials&#39; &#39;true&#39;; 
#允许请求的方法,比如 GET/POST/PUT/DELETE 
add_header &#39;Access-Control-Allow-Methods&#39; *; 
#允许请求的header 
add_header &#39;Access-Control-Allow-Headers&#39; *;
ログイン後にコピー

防盗链

#对源站点验证
valid_referers *.imooc.com; 
#非法引入会进入下方判断 
if ($invalid_referer) { return 404; }
ログイン後にコピー

source: https://www.yuque.com/molizhuzhu/thrgrk/rtslmc

以上が1 つの小さな画像ですべての Nginx を表示の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Tomcat サーバーへの外部ネットワーク アクセスを許可する方法 Tomcat サーバーへの外部ネットワーク アクセスを許可する方法 Apr 21, 2024 am 07:22 AM

Tomcat サーバーが外部ネットワークにアクセスできるようにするには、以下を行う必要があります。 外部接続を許可するように Tomcat 構成ファイルを変更します。 Tomcat サーバー ポートへのアクセスを許可するファイアウォール ルールを追加します。 Tomcat サーバーのパブリック IP を指すドメイン名を指す DNS レコードを作成します。オプション: リバース プロキシを使用して、セキュリティとパフォーマンスを向上させます。オプション: セキュリティを強化するために HTTPS を設定します。

thinkphpの実行方法 thinkphpの実行方法 Apr 09, 2024 pm 05:39 PM

ThinkPHP フレームワークをローカルで実行する手順: ThinkPHP フレームワークをローカル ディレクトリにダウンロードして解凍します。 ThinkPHP ルート ディレクトリを指す仮想ホスト (オプション) を作成します。データベース接続パラメータを構成します。 Webサーバーを起動します。 ThinkPHP アプリケーションを初期化します。 ThinkPHP アプリケーションの URL にアクセスして実行します。

nginxの起動コマンドと停止コマンドとは何ですか? nginxの起動コマンドと停止コマンドとは何ですか? Apr 02, 2024 pm 08:45 PM

Nginx の開始コマンドと停止コマンドは、それぞれ nginx と nginx -s quit です。 start コマンドはサーバーを直接起動し、stop コマンドはサーバーを正常にシャットダウンして、現在のすべてのリクエストを処理できるようにします。その他の使用可能な停止信号には、停止およびリロードがあります。

nginx へようこそ!それを解決するにはどうすればよいですか? nginx へようこそ!それを解決するにはどうすればよいですか? Apr 17, 2024 am 05:12 AM

「nginx へようこそ!」エラーを解決するには、仮想ホスト構成を確認し、仮想ホストを有効にし、Nginx をリロードする必要があります。仮想ホスト構成ファイルが見つからない場合は、デフォルト ページを作成して Nginx をリロードすると、エラー メッセージが表示されます。が消え、ウェブサイトは通常のショーになります。

ウェブサイトにアクセスする際のnginxの問題を解決する方法 ウェブサイトにアクセスする際のnginxの問題を解決する方法 Apr 02, 2024 pm 08:39 PM

Web サイトにアクセスすると nginx が表示されます。その理由としては、サーバーのメンテナンス、サーバーのビジー状態、ブラウザーのキャッシュ、DNS の問題、ファイアウォールのブロック、Web サイトの構成ミス、ネットワーク接続の問題、Web サイトのダウンなどが考えられます。次の解決策を試してください: メンテナンスが終了するまで待つ、オフピーク時間にアクセスする、ブラウザのキャッシュをクリアする、DNS キャッシュをフラッシュする、ファイアウォールまたはウイルス対策ソフトウェアを無効にする、サイト管理者に連絡する、ネットワーク接続を確認する、または検索エンジンを使用するWeb アーカイブを使用して、サイトの別のコピーを見つけます。問題が解決しない場合は、サイト管理者にお問い合わせください。

phpmyadminの登録方法 phpmyadminの登録方法 Apr 07, 2024 pm 02:45 PM

phpMyAdmin に登録するには、まず MySQL ユーザーを作成して権限を付与し、次に phpMyAdmin をダウンロード、インストール、構成し、最後に phpMyAdmin にログインしてデータベースを管理する必要があります。

Nodejsプロジェクトをサーバーにデプロイする方法 Nodejsプロジェクトをサーバーにデプロイする方法 Apr 21, 2024 am 04:40 AM

Node.js プロジェクトのサーバー デプロイメント手順: デプロイメント環境を準備します。サーバー アクセスの取得、Node.js のインストール、Git リポジトリのセットアップ。アプリケーションをビルドする: npm run build を使用して、デプロイ可能なコードと依存関係を生成します。コードをサーバーにアップロードします: Git またはファイル転送プロトコル経由。依存関係をインストールする: サーバーに SSH で接続し、npm install を使用してアプリケーションの依存関係をインストールします。アプリケーションを開始します。node Index.js などのコマンドを使用してアプリケーションを開始するか、pm2 などのプロセス マネージャーを使用します。リバース プロキシの構成 (オプション): Nginx や Apache などのリバース プロキシを使用して、トラフィックをアプリケーションにルーティングします。

Dockerコンテナ間で通信する方法 Dockerコンテナ間で通信する方法 Apr 07, 2024 pm 06:24 PM

Docker 環境でのコンテナ通信には、共有ネットワーク、Docker Compose、ネットワーク プロキシ、共有ボリューム、メッセージ キューの 5 つの方法があります。分離とセキュリティのニーズに応じて、Docker Compose を利用して接続を簡素化するか、ネットワーク プロキシを使用して分離を強化するなど、最も適切な通信方法を選択します。

See all articles