Nginx反向代理設置
前言
因為最近覺得好像要寫一下resume,於是就開始接觸了從來沒寫過的前端網頁(也花了不少時間),然後也是第一次使用以前沒用過的nginx實作反向代理,中途遇到了不少問題花了兩天才把所有的問題排除,我動了兩天的感想如這張圖:
其中遇到最主要的問題是沒有頭緒要怎麼從不同的subdomain轉到不同的port,還有nginx如何指到apache服務(我以前的wordpress網站),其實我當然也可以用github的部署網頁就好,但我覺得這樣就太無趣了。於是就開始了我與nginx的纏鬥。
Troubleshooting
1. Nginx port 沒有出現在netstat上
以前用apache開發的時候只有照別人的tutorial但不是很懂其中的道理,現在稍稍懂了一些。
我原本是只有這段程式碼(etc/nginx/site-enabled/default)
1 | server { |
原本以為proxypass到8080port就可以了,但只寫這樣沒有用,用netstst -nlpt也沒有出現8080port,後來才發現是這串指令只是把從cv.owenowenisme.com進來的client導向8080port而已。不會幫你自己開8080port,因此要自己另外開。
因此要再加上以開啟8080port。:
1 | server{ |
2. Nginx 轉至 Apache 服務
原本在 80 port 的apache服務改到了5000 port,apache中的port.conf要加上:
1 | Listen 127.0.0.1:5000 |
site-enable中的conf檔則要加上
1 | <VirtualHost *:5000> |
其中servername 很重要不能加!因為我們已經要把80轉到5000的工作交給nginx了,因此若在apache 也加上servername會找不到(因為轉進來時已經不是原本的域名了)。
3.限定只能從域名訪問,禁止使用ip連線
安全性的問題?很多網站都會這樣做。
其實實作非常簡單,在site-enabled中的conf檔中加上:
1 | server { |
他的原理就是當接收到空域名時(也就是以ip登入)就會回傳狀態碼403(403 Forbidden),以達到目的。
Result
現在這兩個網站是假在同一個server的不同port,也只能從域名訪問,讚讚讚😼