###### tags: `1111` `lsa` `ncnu` # Week 08 (2022/11/03) [TOC] - Book mode: https://hackmd.io/@ncnu-opensource/book --- - `/var/www`: 瀏覽器預設畫面  新增html 將nginx路徑存在裡面 ## Virtual Host - 主要分為 name-based 以及 IP-based - 在一個server上託管多個網站,網站與網站間共享一個server的記憶體、CPU、設定檔等 - 不浪費 server 資源,最大化利用價值 - demo ```= telnet ammon.bluet.org 80 GET / HTTP / 1.0 ``` ```= <head><title>BlueT.org Studio</title></head> ``` 更改Host ### Name-based Virtual Host - 在同一server上架有多個不同的網站,不同網站間依據名稱判定 - 名稱就是是使用者輸入的FQDN - 一個網站也可以 match 到不止一組的 domain name ### IP-based - 在一台主機上,開設多個IP位址的虛擬主機,可以針對只聽特定的網卡 -  :::info **Port-based Virtual Host** 利用 port 來區別不同的網站,因為不會在常見的 port 上,可以用在內部或私人使用 ::: ### Lab1 實作 1. 進入 `cd /var/www` - 建立資料夾 vhost - `sudo mkdir vhost` - 進入 `/var/www/vhost`,然後建立資料夾 `nginx1` - `sudo mkdir nginx1` - 在裡面新增一個 html - `sudo vim index.html` 2. 再去`sudo vim /etc/hosts`新增一個 host 的紀錄  3. 在sites-available 複製`default`,並命名為 `nginx-vhost` - `sudo cp -a default nginx-vhost` > `-a`: 複製檔案權限 4. 改nginx.vhost裡的**port**、**root**、**server_name**  > port 的第一行設定是 IPv4 ;第二行是 IPv6 5. 把 /etc/nginx/sites-available/nginx-vhost ==softlink== 到 /etc/nginx/site-enabled - `sudo ln -s /etc/nginx/sites-available/nginx-vhost /etc/nginx/sites-enabled/` 6. 確認 softlink 有沒有成功 - `ls -l /etc/nginx/sites-enabled`  > softlink 到 enabled 裡的檔案是服務啟動時會用到的檔案 7. 確認是不是能正常運行,不會崩潰 - `sudo nginx -t` 8. 確認完狀態`sudo service nginx status`是 active 的話,重新讀取設定檔 - `sudo service nginx reload` - `sudo service nginx reload` = `sudo service nginx stop` + `sudo service nginx start` - 如果 reload 之後沒有改變 可以下 `sudo service nginx restart` 重新開機 9. 開啟瀏覽器,確認是否連線成功 - 如果 domain name 是數字開頭會導到搜尋,前面要加 `http://` 才能成功導向 127.0.0.1 - `http://<domain_name>:<port>` ## Reverse Proxy & Load Balance :::info Forward Proxy  - 代理 : client 會透過 proxy 向 server 發出request 因為以前頻寬很貴~,個人電腦都連到 proxy ,proxy 再統一發出request - 同時,proxy 還可以有 **快取** 的功能: ::: ### Reverse proxy 反向代理 - 將 client提出的 request 發給不同的 server 處理  - 可以快取 - 有使用 Reverse proxy - proxy $\to$ server - 沒有使用 Reverse proxy - 直接到 server ### Lab2 實作 1. 先停止服務 - `sudo service nginx stop` 2. 確認 nginx 服務狀態 - `sudo nginx -t` 3. 進到 `/etc/nginx/sites-available/` 裡的設定檔 nginx-vhost 新增一個 proxy_pass  4. 重啟服務 - `sudo service nginx start` 5. 開啟瀏覽器,確認是否連線成功 - 網址與 Lab1 實作相同 ## Load Balance 負載平衡 - Reverse Proxy 的一個功能 - 負載平衡: 將流量合理分配,以提升各 server 的使用率及可用性 - 避免流量集中給同一個server而造成超載/過載/爆掉而使服務無法正常運行 - 避免 server 開著卻沒有用而造成浪費 ### Lab3 實作 1. 在 `/etc/nginx/sites-available` 目錄下新增ㄧ個檔案 - `sudo vim nginx_loadbalance` - 內容: ```= upstream lsa.lab { server lsa.kija.io; server tw.search.yahoo.com.; } server { listen 8070; server_name nginx1.loadBalance.com; location / { proxy_pass http://lsa.lab; } } ``` > 註記: > proxy_pass `http:// lsa.lab`的 `lsa.lab`要與上方 upstream 後面接的網址 `lsa.lab` 相同 2. softlink - `sudo ln -s /etc/nginx/sites-available/nginx_loadbalance /etc/nginx/sites-enabled/` 3. 確認設定檔狀 > `sudo nginx -t` 4. 重啟服務 5. `sudo vim /etc/hosts` 新增host紀錄 > `nginx1.loadBalance.com:8070` 6. 開啟瀏覽器測試 >一直按重新整理,如果可以輪流跳轉至 `lsa.kija.io`、`tw.search.yahoo.com` >兩個頁面就代表成功囉! :::info upstream - 利用 Round Robin 的方式去分散流量 - 定義用的 IP :::
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up