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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

nginx功能扩展整理

發布時間:2025/5/22 编程问答 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 nginx功能扩展整理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

0、基本負載均衡配置

?

編輯/etc/nginx/nginx.conf,加入負載平衡配置:

?

http { upstream tomcat {server localhost:8080;server localhost:8081;} include /etc/nginx/mime.types; default_type application/octet-stream;

?

更新/etc/nginx/conf.d/default.conf,配置反向代理:

?

location / {proxy_pass http://tomcat;}

?

重新啟動Nginx:

?

sudo service nginx restart

1、子請求

當一個請求發起一個“子請求”的時候,依照 Nginx 的術語,習慣把前者稱為后者的“父請求”(parent request)。

location /main {echo_location /foo; # echo_location發送子請求到指定的locationecho_location /bar; } location /foo {echo foo; } location /bar {echo bar; }

輸出:

$ curl location/main
$ foo ? 03. ?bar

這里,main location就是發送2個子請求,分別到foo和bar。這就類似一種函數調用。
“子請求”方式的通信是在同一個虛擬主機內部進行的。所以 Nginx 核心在實現“子請求”的時候,就僅僅調用了若干個 C 函數,全然不涉及不論什么網絡或者 UNIX 套接字(socket)通信。我們由此能夠看出“子請求”的運行效率是極高的。

2、ngx_lua簡單例子

Hello Lua!

# nginx.conf worker_processes 4;events {worker_connections 1024; } http {server {listen 80;server_name localhost;location=/lua {content_by_lua ‘ngx.say("Hello, Lua!")';}} }

輸出:
$ curl 'localhost/lua'
Hello,Lua。

3、配置session粘滯

需要配置Tomcat存儲會話到Redis,我們需要使用 tomcat-redis-session-manager開源庫包,具體需要一些調整,下載這個項目的源碼項目,重新構建,本文使用版本為commons-pool2-2.2.jar 和 jedis-2.6.1.jar.復制這些Jar到tomcat的lib目錄。將你的commons-pool, jedis 更新版本和tomcat版本在tomcat-redis-session-manager的build.gradle中配置一下,然后重新構建項目,將構建結果 tomcat-redis-session-manager-1.2.jar 復制到tomcat lib目錄下,兩個實例都要復制,修改每個tomcat的conf/content.xml文件,在tomcat的context.xml中配置:

<Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" /> <Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager" host="localhost" port="6379" database="0" maxInactiveInterval="60" />

重新啟動tomcat一切完成,你現在可以看到tomcat會話存儲在redis中,使用先前tomcat內置案例,試驗兩個tomcat開機和關機不同情況進行測試,會話數據都不會受到影響。

4、nginx集群設置方向

? 如果有多臺NGINX想實現負載均衡的話,

  1、每臺nginx都有公網地址,在域名處設置同個域名多個指向,最簡單實現輪洵。但故障切負會慢一點。
  2、一臺公網nginx通過upstream功能,輪洵、ip、url多方式分發到內網多臺nginx。但公網的nginx如果down機的話,內網全段。
  3、一對公網nginx加三個公網ip,通過keepalive實現高可用,再upstream到內網(就是我們剛剛上一節講的主從備份)。

一般來說,上面1、2、3種方法基本可以解決,建議用2或3;

如果并發量真的巨大的話,一般就要借助硬件F5等設備做負載均衡,跟DNS、CDN等服務商合作做域名解析轉發、緩存配置,這也是目前大多數大廠的架構配置。

5、失效轉移設置

如果后端tomcat服務器處理超時,則nginx不請求下一個tomcat節點,而是直接返回。nginx默認,會重復嘗試所有的節點以后,才會返回給瀏覽器錯誤。例如:在location設置參數(默認值也是如此):?
proxy_next_upstream http_502 http_504 error timeout invalid_header;?
其中有一個參數值 timeout,這個參數代表如果超時,則嘗試其他節點。因此要去掉這個參數,修改后如下?

proxy_read_timeout 1;?
proxy_next_upstream http_502 http_504 error invalid_header;?

?

轉載于:https://www.cnblogs.com/chappell/p/10609433.html

總結

以上是生活随笔為你收集整理的nginx功能扩展整理的全部內容,希望文章能夠幫你解決所遇到的問題。

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