Linux基本服務Nginx——day03
建立軟連結 ln -s 連結地址 快捷方式 注意:連結地址要用絕對路徑 刪除連結的時候不能用rm -rf 會把原檔案的所有資料都刪除了!
不管是連結地址是檔案還是目錄,刪除軟連結就用: rm -f ……
對稱演算法有:AES、DES,主要應用在單機資料加密。 非對稱演算法有:RSA、DSA,主要應用在網路資料加密。 資訊摘要:MD5、sha256,主要應用在資料完整性校驗、資料秒傳等。
對文加進行雜湊運算: md5sum 檔案 echo '字串' | md5sum 同樣的檔案內容計算出來的雜湊值一定一樣(和檔名無關,只於內容相關)
雜湊取餘演算法: $(echo 'IP地址' | md5sum) % 伺服器個數 這樣可以根據web的ip地址進行分配,同樣的ip取完雜湊值後進行判斷
port資訊
ssh | 22 |
ftp | 20,21 |
dns | 53 |
dhcp | 67 |
http | 80 |
https | 443 |
mysql | 3306 |
php | 9000 |
web叢集
多個伺服器,一起提供web服務,其中一個排程,多個作為網站伺服器,一般排程伺服器是用nginx,網站伺服器apache和nginx都可以
排程伺服器:
upstream 叢集名 # 定義叢集,然後在server虛擬主機中排程 { server ip 配置屬性; # 叢集配置,讓什麼ip加入叢集中 ip_hash; # 根據雜湊取餘演算法進行分配,一條配置就完成了雜湊取餘演算法調配的所有操作 } server{ location{ proxy_pass http://叢集名; # 呼叫上面定義的叢集 } }
配置屬性:(多個配置用空格分割) weight 設定伺服器權重值,預設值為1,按照所佔百分比,判斷出現的次數,權重大的先執行 max_fails 設定最大失敗次數,也就是,判斷連線超過多少次算失敗,達到這個失敗次數後判定這個伺服器不可用 fail_timeout 設定失敗超時時間,單位為秒,判斷伺服器不可用後隔多少時間重新嘗試連線 down 標記伺服器已關機,不參與叢集排程
注意: 1. 對IP進行雜湊取餘,只是針對ip的第一個欄位進行雜湊計算取餘。 2. 配置ip_hash對導致權重沒有實際作用
http{
upstream webs{
ip_hash;
server 192.168.2.100:80 weight=1 max_fails=1 fail_timeout=120;
server 192.168.2.200:80 weight=2 max_fails=2 fail_timeout=50;
server 192.168.2.150 down;
}
server {
listen 80;
server_name www.lyu.com;
location / {
proxy_pass http://webs;
index index.html index.htm;
}
}
建立一個叢集叫webs,裡面有三個web伺服器,其中 IP為192.168.2.100的伺服器,他的權重是1,也是每三次訪問中,第三次是排程到這個伺服器,然後如果有一次連線失敗就判定伺服器不可用,每隔120s判定一次; IP為192.168.2.200的伺服器,他的權重是2,也是每三次訪問中,前兩次是排程到這個伺服器,然後如果有兩次連線失敗就判定伺服器不可用,每隔50s判定一次; IP為192.168.2.200的伺服器,他不使用。 不過因為配置中有ip_hash 會根據ip的前三位進行取餘排程,所以,所有的100段的所有ip主機都是到一個伺服器,這會使之前的權重沒有作用。
TCP/IP代理伺服器
ssh -p 埠 IP 以指定的埠進行訪問
編譯安裝必須要使用--with-stream的模組,但是隻有nginx的1.9版本後才有這個功能
要注意在做代理的時候監聽埠不能和原先服務一樣的埠,因為這樣原來的服務佔用埠,導致服務起不來 客戶端在訪問的時候要標明段口號
基本格式:(在http外,進行修改,因為這不是web網頁)
stream {
upstream 叢集名 {
server IP:段口號; //後端SSH伺服器的IP和埠
}
server {
listen 監聽的段口號; //Nginx監聽的埠
proxy_pass 叢集名;
}
}
針對資料庫伺服器的代理: 資料庫的代理服務和普通的其他服務不一樣,預設mysql是不能以root身份遠端控制的,所以必須賦權建立一個使用者,用於遠端 在資料庫介面中: grant all on *.* 使用者名稱@'%' identified by '密碼' 檢查是否配置成功: mysql -h 192.168.4.55 -P12345 -uyzy -p
常見問題以及解決方案:
為提高伺服器的併發良,在原配置檔案中修改:
worker_processes 2; //與CPU核心數量一致
events{
worker_connections 65535; //每個worker最大併發連線數
use epoll; //使用較優演算法
}
調整核心資訊: 檢視:ulimit -a 其中的 open files 關乎併發量,他有軟限制和硬限制; 軟限制每個使用者都可以修改,硬限制只能是root才能修改; 軟限制是實際限制併發的數值,硬限制是限制軟限制的大小的值。 ulimit -Hn 100000 //設定硬限制(臨時規則) ulimit -Sn 100000 //設定軟限制(臨時規則)
永久配置,修改配置檔案:/etc/security/limits.conf,去掉#註釋符號,進行配置,其中這四列分別代表: 對什麼生效 ,格式(soft軟,hard硬 ),需要限制的專案,限制的值
#<domain> <type> <item> <value>
#
#* soft nofile 0
#* hard nofile 10000
414報錯 出現414標示是客戶端的輸入的地址超過了伺服器設定的快取大小,修改方法就是,修改nginx裡的記憶體佔用即可
http {
include mime.types;
default_type application/octet-stream;
client_header_buffer_size 1k; # 修改預設開啟的快取大小
large_client_header_buffers 4 4k; # 預設快取不夠時,開啟
……
}
設定快取保留時間:
在sever裡面,如果訪問了圖片或者視訊,就設定快取,,所以正則匹配表達,以jpg等結尾的檔案進行快取
server {
location ~* \.(jpg|jpeg|gif|png|css|js|ico|xml)$ {
expires 30d; //定義客戶端快取時間為30天
}
}
其中的 ~* 代表正則匹配,並且不區分大小寫
對報錯的頁面,進行美化修改:
錯誤編號 | 含義 |
200 | 正常 |
301 | 永久重定向 |
302 | 臨時重定向 |
304 | 重定向到本機,指的快取資訊 |
401 | 使用者名稱和密碼錯誤 |
403 | 禁止訪問,也就是IP被拒絕訪問了 |
404 | 檔案不存在 |
414 | 請求的URI位址列太長 |
500 | 伺服器內部錯誤 |
502 | 叢集中,排程器無法和後臺伺服器連結,也就是叢集有問題 |
server{
error_page 錯誤序號1 錯誤序號2 …… /檔案路徑和目錄
}
其中這個 / 指的是網頁根目錄,也就是location中的root所指目錄(root中的相對路徑是nginx安裝配置的時候配置的目錄下的路徑)