Java-Nginx基礎

codfishXY發表於2020-10-06

1. 什麼是 Nginx?

Nginx是一款高效能的HTTP伺服器,其特點是佔有記憶體少,併發能力強,負載均衡、反向代理、處理靜態檔案優勢大,通常配合Tomcat使用實現動靜分離

2. Dokcer 配置 Nginx

docker中的nginx配置檔案對應位置

  • /etc/nginx/nginx.conf 主配置檔案,全域性塊、events塊、http塊
  • /etc/nginx/conf.d 資料夾下的所有附加配置檔案,可以單獨配置sever塊

docker配置nginx方法

  1. 建立對映目錄,獲取nginx.conf檔案,此檔案中包含server配置
mkdir -p /home/app/nginx/{conf,conf.d,html,logs}
cd /home/app/nginx/conf
wget https://trac.nginx.org/nginx/export/HEAD/nginx/conf/nginx.conf
  1. 啟動容器,對映相關目錄和配置檔案
docker run --privileged=true --name mynginx -p 80:80 \
-v /home/app/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /home/app/nginx/conf.d:/etc/nginx/conf.d \
-v /home/app/nginx/logs:/var/log/nginx \
-v /home/app/nginx/html:/usr/share/nginx/html \
-d nginx:latest

3. 負載均衡

假設後臺伺服器如下

  • 反向代理nginx伺服器:xxx.xxx.xxx.xxx:80 www.codfish.com
  • 後臺tomcat伺服器:127.0.0.1:8080;127.0.0.1:8081;127.0.0.1:8082
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;

	upstream tomcats {
		ip_hash;
		server xxx.xxx.xxx.xxx:8080;
		server xxx.xxx.xxx.xxx:8081;
		server xxx.xxx.xxx.xxx:8082;
	}
	
	server {
		listen       80;
	    server_name  www.codfish.com;

		location / {
			proxy_pass http://tomcats;
		}
		
	 	error_page   500 502 503 504  /50x.html;
     	location = /50x.html {
        	root   html;
     	}
     }		
}
  • 輪詢:請求按照時間順序分配到不同的伺服器上,預設方式
  • 權重:按重要性合理分配各伺服器權重,weight=?
  • ip雜湊:根據訪問ip的hash結果分配固定伺服器,ip_hash
  • 最少連線:將請求優先分配到連線數最少的伺服器上,least_conn
  • fair:按後端伺服器的響應時間來分配請求,響應時間短的優先分配

相關文章