Ubuntu:安裝 Nginx 做反向代理(Reverse Proxy)設定教學

2023/01/07 2,456 1 作業系統 , 伺服器 , Linux , Ubuntu

反向代理(Reverse proxy)是一種代理伺服器,它接受客戶端的連接請求,然後將請求轉發給內部或外部的後端伺服器,並將該後端伺服器的響應返回給客戶端。反向代理可以用來幫助保護後端伺服器,因為它能將客戶端與後端伺服器分離開來。透過反向代理,客戶端並不知道真實的伺服器在哪裡,它可以是內部指定 Port 的服務,也能是外部指定 Port 的服務。透過反向代理,您能夠在同個系統架構下架設多個服務,本文教學用以下案例來說明,我伺服器同個架構(環境為 Ubuntu)內運用 Docker 建立了一個 Web 服務(內部 4001 Port)及 phpmyadmin(內部 8080 Port)來查看資料庫,而我有一個主網域 mnya.local 及子網域 phpmyadmin.mnya.local,我想將它們通通指向這台伺服器,而且伺服器透過我設定的反向代理能將客戶端帶往正確的服務。

過去我有用過 Apache 的反向代理功能,一樣非常方便好用,不過研究了 Nginx 的反向代理,我發現其設定檔更為簡單好上手,可能更適合新手來試試,跟著教學,您能把伺服器發揮最高價值,買一個主網域能建立多個子網域通通指向該伺服器,一台伺服器能有非常多 Port 可以開你要的服務,在設計好反向代理機制將這些內部 Port 轉發到這些網域的 80(甚至 443)Port,就能同時擁有多個基於 Web 的服務,是不是很棒啊!


▲ 用 SSH 連線進入到伺服器環境,我的作業系統是 Ubuntu,我習慣先 sudo su 之後指令就不用再 sudo 了!接著來安裝 Nginx:

apt install nginx

記得打 y 繼續安裝。


▲ 運用 service nginx start 指令啟動,再用 service nginx status 指令檢查 Nginx 是否正常運作。接著我們要用 vim 在 /etc/nginx/conf.d 之下建立 default.conf 設定檔案,輸入以下配置:

server {
    listen 80;
    server_name phpmyadmin.mnya.local;
    location / {
        proxy_pass http://localhost:8080;
 
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $http_x_forwarded_proto;
    }
}

server {
    listen 80;
    server_name mnya.local;
    location / { 
        proxy_pass http://localhost:4001;
 
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $http_x_forwarded_proto;
    }
}

這邊我設定了兩個 server,都是監聽 80 Port 來的請求,也就是使用者能透過 http 連線過來,接著 server_name 指令網域,location 指令到 / 根,proxy_pass 則是要連線到的後端伺服器,可以內部也能外部,後面的三行 proxy_set_header 是 Protocol header 及 IP 資訊往後送給後端。


▲ 設定檔存檔後可以用  指令 nginx -t 檢查設定是否有問題,再用 nginx -s reload 讓 Nginx 重新載入設定。

▲ 接著就能用瀏覽器查看是否成功運作囉!是不是很方便呀!

贊助廣告 ‧ Sponsor advertisements

留言區 / Comments

萌芽論壇