日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Nginx >内容正文

Nginx

Nginx学习_狂神

發布時間:2025/3/12 Nginx 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Nginx学习_狂神 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Nginx

公司產品出現瓶頸?

我們公司項目剛剛上線的時候,并發量小,用戶使用的少,所以在低并發的情況下,一個jar包啟動應用就夠了,然后內部tomcat返回內容給用戶。

但是慢慢的,使用我們平臺的用戶越來越多了,并發量慢慢增大了,這時候一臺服務器滿足不了我們的需求了。

于是我們橫向擴展,又增加了服務器。這個時候幾個項目啟動在不同的服務器上,用戶要訪問,就需要增加一個代理服務器了,通過代理服務器來幫我們轉發和處理請求。

我們希望這個代理服務器可以幫助我們接收用戶的請求,然后將用戶的請求按照規則幫我們轉發到不同的服務器節點之上。這個過程用戶是無感知的,用戶并不知道是哪個服務器返回的結果,我們還希望他可以按照服務器的性能提供不同的權重選擇。保證最佳體驗!所以我們使用了Nginx。

什么是Nginx?

Nginx (engine x) 是一個高性能的HTTP和反向代理web服務器,同時也提供了IMAP/POP3/SMTP服務。Nginx是由伊戈爾·賽索耶夫為俄羅斯訪問量第二的Rambler.ru站點(俄文:Рамблер)開發的,第一個公開版本0.1.0發布于2004年10月4日。2011年6月1日,nginx 1.0.4發布。

其特點是占有內存少,并發能力強,事實上nginx的并發能力在同類型的網頁服務器中表現較好,中國大陸使用nginx網站用戶有:百度、京東、新浪、網易、騰訊、淘寶等。在全球活躍的網站中有12.18%的使用比率,大約為2220萬個網站。

Nginx 是一個安裝非常的簡單、配置文件非常簡潔(還能夠支持perl語法)、Bug非常少的服務。Nginx 啟動特別容易,并且幾乎可以做到7*24不間斷運行,即使運行數個月也不需要重新啟動。你還能夠不間斷服務的情況下進行軟件版本的升級。

Nginx代碼完全用C語言從頭寫成。官方數據測試表明能夠支持高達 50,000 個并發連接數的響應。

Nginx作用?

Http代理,反向代理:作為web服務器最常用的功能之一,尤其是反向代理。

正向代理

? 代理客戶端的是正向代理,在本機上安裝

? 比如用vpn訪問外網,vpn代理你的電腦,訪問外網,再返回給你

反向代理

代理服務器的是反向代理

? 比如訪問百度,永遠都是www.bai…,后臺動態擴容多少服務器,都無法感知

Nginx提供的負載均衡策略有2種:內置策略和擴展策略。內置策略為輪詢,加權輪詢,Ip hash。擴展策略,就天馬行空,只有你想不到的沒有他做不到的。

輪詢

加權輪詢

? 3服務器比較牛,權重高,大量請求都會來到服務器3

iphash對客戶端請求的ip進行hash操作,然后根據hash結果將同一個客戶端ip的請求分發給同一臺服務器進行處理,可以解決session不共享的問題。

動靜分離,在我們的軟件開發中,有些請求是需要后臺處理的,有些請求是不需要經過后臺處理的(如:css、html、jpg、js等等文件),這些不需要經過后臺處理的文件稱為靜態文件。讓動態網站里的動態網頁根據一定規則把不變的資源和經常變的資源區分開來,動靜資源做好了拆分以后,我們就可以根據靜態資源的特點將其做緩存操作。提高資源響應的速度。

目前,通過使用Nginx大大提高了我們網站的響應速度,優化了用戶體驗,讓網站的健壯性更上一層樓!

Nginx的安裝

windows下安裝

1、下載nginx

http://nginx.org/en/download.html 下載穩定版本。

以nginx/Windows-1.16.1為例,直接下載 nginx-1.16.1.zip。
下載后解壓,解壓后如下:

2、啟動nginx

有很多種方法啟動nginx

(1)直接雙擊nginx.exe,雙擊后一個黑色的彈窗一閃而過(不提倡)

(2)打開cmd命令窗口,切換到nginx解壓目錄下,輸入命令 nginx.exe ,回車即可

3、檢查nginx是否啟動成功

直接在瀏覽器地址欄輸入網址 http://localhost:80 回車,出現以下頁面說明啟動成功!

4、配置監聽

nginx的配置文件是conf目錄下的nginx.conf,默認配置的nginx監聽的端口為80,如果80端口被占用可以修改為未被占用的端口即可。

當我們修改了nginx的配置文件nginx.conf 時,不需要關閉nginx后重新啟動nginx,只需要執行命令 nginx -s reload 即可讓改動生效

5、關閉nginx

如果使用cmd命令窗口啟動nginx, 關閉cmd窗口是不能結束nginx進程的,可使用兩種方法關閉nginx

(1)輸入nginx命令 nginx -s stop(快速停止nginx) 或 nginx -s quit(完整有序的停止nginx)

(2)使用taskkill taskkill /f /t /im nginx.exe

taskkill是用來終止進程的, /f是強制終止 . /t終止指定的進程和任何由此啟動的子進程。 /im示指定的進程名稱 .

linux下安裝

1、安裝gcc

安裝 nginx 需要先將官網下載的源碼進行編譯,編譯依賴 gcc 環境,如果沒有 gcc 環境,則需要安裝:

( 在linux上,gcc是一個很重要的c編譯器。因為linux的源碼包必須通過編譯才能使用。如果沒有gcc的話,就很難辦咯。 )

(yum( Yellow dog Updater, Modified)是一個在Fedora和RedHat以及SUSE中的Shell前端軟件包管理器。 yum提供了查找、安裝、刪除某一個、一組甚至全部軟件包的命令,而且命令簡潔而又好記。僅安裝指定的軟件命令:yum install <package_name>)

yum install gcc-c++ gcc -v 查看gcc是否安裝

2、PCRE pcre-devel 安裝

PCRE(Perl Compatible Regular Expressions) 是一個Perl庫,包括 perl 兼容的正則表達式庫。nginx 的 http 模塊使用 pcre 來解析正則表達式,所以需要在 linux 上安裝 pcre 庫,pcre-devel 是使用 pcre 開發的一個二次開發庫。nginx也需要此庫。命令:

yum install -y pcre pcre-devel

3、zlib 安裝

zlib 庫提供了很多種壓縮和解壓縮的方式, nginx 使用 zlib 對 http 包的內容進行 gzip ,所以需要在 Centos 上安裝 zlib 庫。

yum install -y zlib zlib-devel

4、OpenSSL 安裝
OpenSSL 是一個強大的安全套接字層密碼庫,囊括主要的密碼算法、常用的密鑰和證書封裝管理功能及 SSL 協議,并提供豐富的應用程序供測試或其它目的使用。
nginx 不僅支持 http 協議,還支持 https(即在ssl協議上傳輸http),所以需要在 Centos 安裝 OpenSSL 庫。

yum install -y openssl openssl-devel

5、下載安裝包

手動下載.tar.gz安裝包,地址:https://nginx.org/en/download.html

下載完畢上傳到服務器上 /root

6、解壓

tar -zxvf nginx-1.18.0.tar.gz cd nginx-1.18.0

7、配置

使用默認配置,在nginx根目錄下執行

./configure make make install

查找安裝路徑: whereis nginx

Nginx常用命令

cd /usr/local/nginx/sbin/ ./nginx 啟動 ./nginx -s stop 停止 ./nginx -s quit 安全退出 ./nginx -s reload 重新加載配置文件 ps aux|grep nginx 查看nginx進程

啟動成功訪問 服務器ip:80

注意:如何連接不上,檢查阿里云安全組是否開放端口,或者服務器防火墻是否開放端口!
相關命令:

# 開啟 service firewalld start # 重啟 service firewalld restart # 關閉 service firewalld stop # 查看防火墻規則 firewall-cmd --list-all # 查詢端口是否開放 firewall-cmd --query-port=8080/tcp # 開放80端口 firewall-cmd --permanent --add-port=80/tcp # 移除端口 firewall-cmd --permanent --remove-port=8080/tcp#重啟防火墻(修改配置后要重啟防火墻) firewall-cmd --reload# 參數解釋 1、firwall-cmd:是Linux提供的操作firewall的一個工具; 2、--permanent:表示設置為持久; 3、--add-port:標識添加的端口;

演示

//這里的lb隨意起名字,為了后邊使用 upstream lb{ //多臺服務器加一個負載均衡配置//服務器資源server 127.0.0.1:8080 weight=1;server 127.0.0.1:8081 weight=1; }location / {proxy_pass http://lb; //代理 } #user nobody; worker_processes 1;#error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info;#pid logs/nginx.pid;events {worker_connections 1024; }http {include mime.types;default_type application/octet-stream;#log_format main '$remote_addr - $remote_user [$time_local] "$request" '# '$status $body_bytes_sent "$http_referer" '# '"$http_user_agent" "$http_x_forwarded_for"';#access_log logs/access.log main;sendfile on;#tcp_nopush on;#keepalive_timeout 0;keepalive_timeout 65;#gzip on;upstream kuangstudy{ //多臺服務器加一個負載均衡配置//服務器資源server 127.0.0.1:8080 weight=1;server 127.0.0.1:8081 weight=1;} server {listen 80;server_name localhost;#charset koi8-r;#access_log logs/host.access.log main;location / {root html;index index.html index.htm;proxy_pass http://kuangstudy; //反向代理} #error_page 404 /404.html;# redirect server error pages to the static page /50x.html.........................................

配置文件:conf/nginx.conf

全局配置events {worker_connections 1024; }http {http配置upstream xx{//負載均衡配置}server {listen 80;server_name localhost;//代理location / {proxy_pass http://lb;}}server {listen 443;server_name localhost;//代理}} user www www; worker_processes 2;error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info;pid logs/nginx.pid;events { use epoll; worker_connections 2048; }http { include mime.types; default_type application/octet-stream;#log_format main '$remote_addr - $remote_user [$time_local] "$request" ' # '$status $body_bytes_sent "$http_referer" ' # '"$http_user_agent" "$http_x_forwarded_for"';#access_log logs/access.log main;sendfile on; # tcp_nopush on;keepalive_timeout 65;# gzip壓縮功能設置 gzip on; gzip_min_length 1k; gzip_buffers 4 16k; gzip_http_version 1.0; gzip_comp_level 6; gzip_types text/html text/plain text/css text/javascript application/json application/javascript application/x-javascript application/xml; gzip_vary on;# http_proxy 設置 client_max_body_size 10m; client_body_buffer_size 128k; proxy_connect_timeout 75; proxy_send_timeout 75; proxy_read_timeout 75; proxy_buffer_size 4k; proxy_buffers 4 32k; proxy_busy_buffers_size 64k; proxy_temp_file_write_size 64k; proxy_temp_path /usr/local/nginx/proxy_temp 1 2;# 設定負載均衡后臺服務器列表 upstream backend { #ip_hash; server 192.168.10.100:8080 max_fails=2 fail_timeout=30s ; server 192.168.10.101:8080 max_fails=2 fail_timeout=30s ; }# 很重要的虛擬主機配置 server { listen 80; server_name itoatest.example.com; root /apps/oaapp;charset utf-8; access_log logs/host.access.log main;#對 / 所有做負載均衡+反向代理 location / { root /apps/oaapp; index index.jsp index.html index.htm;proxy_pass http://backend; proxy_redirect off; # 后端的Web服務器可以通過X-Forwarded-For獲取用戶真實IP proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;}#靜態文件,nginx自己處理,不去backend請求tomcat location ~* /download/ { root /apps/oa/fs;} location ~ .*\.(gif|jpg|jpeg|bmp|png|ico|txt|js|css)$ { root /apps/oaapp; expires 7d; } location /nginx_status { stub_status on; access_log off; allow 192.168.10.0/24; deny all; }location ~ ^/(WEB-INF)/ { deny all; } #error_page 404 /404.html;# redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } }## 其它虛擬主機,server 指令開始 }

總結

以上是生活随笔為你收集整理的Nginx学习_狂神的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。