主頁 >  其他 > Nginx 入門實戰(2)--簡單使用

Nginx 入門實戰(2)--簡單使用

2023-05-01 07:32:41 其他

本文主要介紹 Nginx 的實際使用,文中所使用到的軟體版本:Centos 7.9.2009、Nginx 1.22.1,

1、環境準備

這里主要演示使用 Nginx 代理 Http 及 TCP 應用,環境資訊如下:

主機 用途 Http 埠 TCP 埠
10.49.196.30 部署 Http、TCP 應用 8080 9090
10.49.196.31 部署 Http、TCP 應用 8080 9090
10.49.196.33 部署 Nginx    

2、Http 應用

配置代理時都新建新的組態檔 conf/http.conf,然后在主組態檔 conf/nginx.conf 中引入該檔案:

http {
    include       mime.types;
    default_type  application/octet-stream;
    ...
    include http.conf;
    ...
}

2.1、普通代理

server {
  listen 8081;
  server_name  localhost-8081;
  access_log  logs/access-8081.log;

  location /myapp {
    proxy_pass  http://10.49.196.30:8080/myapp;
  }
  location / {
    proxy_pass  https://www.baidu.com;
  }
}

代理地址為:http://10.49.196.33:8081/myapp,被代理地址為:http://10.49.196.30:8080/myapp;根地址代理百度網站,

2.2、負載均衡

upstream cluster {
  server 10.49.196.30:8080 weight=1;
  server 10.49.196.31:8080 weight=1;
  round-robin;
}

server {
  listen 8082;
  server_name  localhost-8082;
  access_log  logs/access-8082.log;

  location /myapp {
    proxy_pass  http://cluster/myapp;
  }
}

Nginx 支持三種負載均衡演算法:

  • round-robin:輪詢(默認演算法)
  • least-connected:下一個請求將分配給當前擁有最少活躍連接數的服務器,對應的 Nginx 指令為 least_conn
  • ip-hash:同一 ip 的請求分配到同一個服務器,對應的 Nginx 指令為 ip_hash

Nginx 還支持通過指定服務器的權重(weight) 來影響負載均衡演算法,上面的配置意味著兩臺服務器在特定負載均衡演算法上具有相同的資格,

2.3、組態檔服務器

server {
  listen 8083;
  server_name  localhost-8083;
  access_log  logs/access-8083.log;
  location / {
    autoindex on;            
    autoindex_exact_size on;
    autoindex_localtime on;
    charset utf-8;
    root  /mnt/centos7;
  }
}

2.4、啟用 Nginx Status

server {
  listen 8083;
  server_name  localhost-8083;
  access_log  logs/access-8083.log;
  
  location /nginxStatus {
    stub_status  on;
    access_log  on;
    auth_basic  "NginxStatus";
  }
  ...
}

2.4、限流

2.4.1、限制訪問頻率

limit_req_zone $binary_remote_addr zone=peripZone:10m rate=100r/m;
server {
  listen 8081;
  server_name  localhost-8081;
  access_log  logs/access-8081.log;

  location /myapp {
    limit_req zone=peripZone burst=5 nodelay;
    proxy_pass  http://10.49.196.30:8080/myapp;
  }
}

limit_req_zone 定義了一個名為 peripZone 的共享記憶體區域,大小為 10M,最大訪問速率為:每分鐘 100 個請求;該區域以“客戶端地址”為 key 來保存狀態資訊,
limit_req 設定使用的共享記憶體區域,burst 定義了過量請求的快取佇列大小,超過訪問速率的請求將保存該佇列中;如果快取佇列也慢了將直接回傳 503;nodelay 表示快取佇列中請求將不會被延遲處理(雖然超過了請求速率,快取佇列中請求也立即被處理),也可通過 delay=number 來設定快取佇列中請求被延遲處理的個數,

2.4.2、限制并發連接數

limit_conn_zone $server_name zone=perserverZone:10m;
server {
  listen 8081;
  server_name  localhost-8081;
  access_log  logs/access-8081.log;

  location /myapp {
    limit_conn perserverZone 5;
    proxy_pass  http://10.49.196.30:8080/myapp;
  }
}

limit_conn_zone 定義了一個名為 perserverZone 的共享記憶體區域,大小為 10M;該區域以“虛擬服務器名稱”為 key 來保存狀態資訊,
limit_conn 設定使用的共享記憶體區域,并定義最大并發連接數,

2.5、配置 Https

2.5.1、生成證書

啟用 Https,需要使用 OpenSSL 創建證書,

A、生成根證書

openssl genrsa -out ca.key
openssl req -new -key ca.key -out ca.csr
openssl x509 -req -days 3650 -in ca.csr -signkey ca.key -out ca.pem

B、生成服務端證書

openssl genrsa -out server.key
openssl req -new -key server.key -out server.csr
openssl ca -days 3650 -in server.csr -cert ca.pem -keyfile ca.key -out server.pem

C、生成客戶端證書

openssl genrsa -des3 -out client.key 1024
openssl req -new -key client.key -out client.csr
openssl ca -days 1500 -in client.csr -cert ca.pem -keyfile ca.key -out client.pem
openssl pkcs12 -export -clcerts -in client.pem -inkey client.key -out client.p12

使用 OpenSSL 創建證書的詳細說明可參考:OpenSSL 介紹(5)--數字證書;這里生成的證書假設都存放在 /home/mongo/ssl 目錄下,

2.5.2、Nginx 中配置 Https

server {
  listen 4430 ssl;
  server_name  localhost-8084;
  access_log  logs/access-8084.log;

  ssl_certificate  /home/mongo/ssl/server.pem;
  ssl_certificate_key  /home/mongo/ssl/server.key;

  ssl_session_cache  shared:SSL:1m;
  ssl_session_timeout  5m;

  ssl_ciphers  HIGH:!aNULL:!MD5;
  ssl_prefer_server_ciphers  on;

  ssl_client_certificate  /home/mongo/ssl/ca.pem; 
  ssl_verify_client  on;
  
  location /myapp {
    proxy_pass  http://10.49.196.30:8080/myapp;
  }
}

上述配置開啟了客戶端驗證,客戶端訪問時需要使用客戶端證書(client.p12)來訪問;瀏覽器訪問匯入該證書即可,Java 客戶端的訪問可參考:Java呼叫Http/Https介面(2)--HttpURLConnection/HttpsURLConnection呼叫Http/Https介面,如果不需要客戶端驗證,注釋掉如下配置即可:

ssl_client_certificate  /home/mongo/ssl/ca.pem; 
ssl_verify_client  on;

3、TCP 應用

配置代理時都新建新的組態檔 conf/tcp.conf,然后在主組態檔 conf/nginx.conf 最后該檔案:

...
include tcp.conf;

3.1、普通代理

stream {
  server {
    listen 9090;
    proxy_pass 10.49.196.30:9090;
  }
}

代理地址為:10.49.196.33:9090,被代理地址為:10.49.196.30:9090,

3.2、負載均衡

stream {
  upstream tcp3031 {
    server 10.49.196.30:9090;
    server 10.49.196.31:9090;
  }
  
  server { 
    listen 9091;
    proxy_pass tcp3031;
  }
} 

 

 

 

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/551527.html

標籤:其他

上一篇:基于ChatGPT用AI實作自然對話

下一篇:返回列表

標籤雲
其他(158347) Python(38110) JavaScript(25398) Java(18011) C(15221) 區塊鏈(8261) C#(7972) AI(7469) 爪哇(7425) MySQL(7153) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5870) 数组(5741) R(5409) Linux(5334) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4565) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2432) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1964) Web開發(1951) HtmlCss(1929) python-3.x(1918) 弹簧靴(1913) C++(1912) xml(1889) PostgreSQL(1874) .NETCore(1857) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • Nginx 入門實戰(2)--簡單使用

    本文主要介紹 Nginx 的實際使用,文中所使用到的軟體版本:Centos 7.9.2009、Nginx 1.22.1。 1、環境準備 這里主要演示使用 Nginx 代理 Http 及 TCP 應用,環境資訊如下: 主機 用途 Http 埠 TCP 埠 10.49.196.30 部署 Http、 ......

    uj5u.com 2023-05-01 07:32:41 more
  • 基于ChatGPT用AI實作自然對話

    1.概述 ChatGPT是當前自然語言處理領域的重要進展之一,通過預訓練和微調的方式,ChatGPT可以生成高質量的文本,可應用于多種場景,如智能客服、聊天機器人、語音助手等。本文將詳細介紹ChatGPT的原理、實戰演練和流程圖,幫助讀者更好地理解ChatGPT技術的應用和優勢。 2.內容 在當今快 ......

    uj5u.com 2023-05-01 07:26:08 more
  • AtCoder Beginner Contest 300

    A - N-choice question (abc300 a) 題目大意 給定一個元素互不相同的陣列$c$和 $a,b$,找到 $i$使得 $c_i = a + b$ 解題思路 直接for回圈尋找即可。 神奇的代碼 ```cpp #include using namespace std; usin ......

    uj5u.com 2023-04-30 07:50:49 more
  • 中國剩余定理(CRT)學習筆記

    約定 $A\perp B$ 表示 $\gcd(A,B)=1$。 $A\mid B$ 表示 $B\equiv 0\pmod{A}(A\neq0)$。 引入 考慮以下這道題: 有物不知其數,三三數之剩二,五五數之剩三,七七數之剩二。 問物幾何?—— 《孫子算經》 也就是說,求出下列關于 $x$ 方程組的 ......

    uj5u.com 2023-04-30 07:50:44 more
  • Vulnhub之GreenOptics靶機詳細測驗程序

    GreenOptics 識別目標主機IP地址 ─(kali?kali)-[~/Vulnhub/GreenOptic] └─$ sudo netdiscover -i eth1 -r 192.168.56.0/24 Currently scanning: Finished! | Screen View ......

    uj5u.com 2023-04-30 07:50:40 more
  • 一文帶你了解區塊鏈中15種共識演算法

    所有主要的區塊鏈共識演算法解釋 區塊鏈技術席卷全球,提供了一種去中心化且安全的資訊存盤和傳輸方式。它還徹底改變了交易的執行方式,隨之而來的是廣泛的共識演算法。在這里,共識演算法在確保區塊鏈網路的完整性方面發揮著關鍵作用。在本文中,我們將探討所有主要型別的區塊鏈共識演算法、它們的含義、優點、缺點,以及為什么它 ......

    uj5u.com 2023-04-30 07:50:19 more
  • Spring RCE漏洞

    Spring RCE漏洞 一、漏洞概況與影響 CVE編號:CVE-2022-22965 受影響范圍: Spring Framework 5.3.X < 5.3.18 Spring Framework 5.2.X < 5.2.20 JDK >=9 使用Tomcat中間件且開啟了Tomcat日志記錄的應 ......

    uj5u.com 2023-04-30 07:50:04 more
  • xss-labs靶場

    在線XSS-labs靶場:https://xssaq.com/yx/ 靶場搭建 靶場是直接使用docker搭建的 docker pull vulfocus/xss-labs 啟動靶場 docker run -p 8005:80 vulfocus/xss-labs 瀏覽器訪問IP+8005 windo ......

    uj5u.com 2023-04-30 07:49:11 more
  • traefik網關的https上游配置

    老牌網關traefik。因為沒有中文網站和社區支持,自己研究很費勁。
    https上游如何配置,沒有一個可用的。我把經驗總結下來,給大家使用。 ......

    uj5u.com 2023-04-30 07:48:23 more
  • 解密Prompt系列6. lora指令微調扣細節-請冷靜,1個小時真不夠~

    上一章介紹了如何基于APE+SELF自動化構建指令微調樣本。這一章咱就把微調跑起來,主要介紹以Lora為首的低引數微調原理,環境配置,微調代碼,以及大模型訓練中顯存和耗時優化的相關技術細節 ......

    uj5u.com 2023-04-30 07:48:10 more