nginx只要寫好設定檔就能幫我們處理好反向代理,我們可以用來處理subdomain映射到不同port的需求
現在什麼都要包在docker裡,nginx當然也不例外,把image拉下來
docker pull nginx:latest
在config建立nginx資料夾,創建nginx.conf寫入
server {
listen 80;
server_name dcreater.com;
location / {
proxy_pass http://127.0.0.1:8000;
}
}
server {
listen 80;
server_name account.dcreater.com;
location / {
proxy_pass http://127.0.0.1:8001;
}
}
server {
listen 80;
server_name asset.dcreater.com;
location / {
proxy_pass http://127.0.0.1:8002;
}
}
解釋:
listen
監聽的portserver_name
對應的網址location / {}
所有路徑proxy_pass
導向的網址nginx設定檔預設是放在/etc/nginx/conf.d/default.conf,我們用-v把我們的設定檔掛載上去
docker run -d -v `pwd`/config/nginx/nginx.conf:/etc/nginx/conf.d/default.conf -p 80:80 nginx
現在不需要打port也能連上對應的server了
我們已經在go裡處理過log了,不過在nginx也能設定log幫助開發時debug,修改設定檔
log_format logdata $Host | $request_uri;
server {
listen 80;
server_name dcreater.com;
location / {
resolver 127.0.0.11;
proxy_pass http://app:8000;
}
access_log /var/log/nginx/access.log logdata;
error_log /var/log/nginx/error.log;
}
server {
listen 80;
server_name account.dcreater.com;
location / {
proxy_pass http://app:8001;
}
}
server {
listen 80;
server_name asset.dcreater.com;
location / {
proxy_pass http://app:8002;
}
}
解釋:
log_format logdata $Host | $request_uri;
定義一個log格式名叫"logdata",他會輸出host與request的網址access_log /var/log/nginx/access.log logdata;
沒出錯會以"logdata"的格式紀錄在/var/log/nginx/access.log中error_log /var/log/nginx/error.log;
如果有錯誤,錯誤訊息會紀錄在/var/log/nginx/error.log中記得要放log的資料夾掛載到/var/log/nginx
我們目前還沒有icon,所以也可以在nginx裡處理,這裡簡單帶過,關掉log就好
location = /favicon.ico {
access_log off;
error_log off;
}
簡單帶過nginx代理,明天來說CORS
目前的工作環境
.
├── app
│ ├── apperr
│ │ ├── error.go
│ │ └── handle.go
│ ├── common
│ │ └── cookie.go
│ ├── config
│ │ ├── app
│ │ │ ├── app.yaml
│ │ │ └── error.yaml
│ │ └── nginx
│ │ └── nginx.conf
│ ├── database
│ │ ├── auth.go
│ │ ├── connect.go
│ │ ├── error.go
│ │ ├── main.go
│ │ └── scheme.go
│ ├── go.mod
│ ├── go.sum
│ ├── log
│ │ ├── logger.go
│ │ └── logging.go
│ ├── main.go
│ ├── middleware
│ │ ├── auth.go
│ │ ├── error.go
│ │ └── log.go
│ ├── router
│ │ ├── account.go
│ │ ├── asset.go
│ │ ├── host_switch.go
│ │ └── main.go
│ ├── serve
│ │ ├── account.go
│ │ ├── asset.go
│ │ ├── auth.go
│ │ ├── main.go
│ │ └── main_test.go
│ ├── setting
│ │ └── setting.go
│ ├── util
│ │ ├── debug
│ │ │ ├── stack.go
│ │ │ └── stack_test.go
│ │ ├── file
│ │ │ └── file.go
│ │ ├── hash
│ │ │ ├── hash.go
│ │ │ └── hash_test.go
│ │ └── random
│ │ └── random.go
│ └── view
│ ├── css
│ ├── html
│ │ ├── component
│ │ │ ├── blogContainer.html
│ │ │ ├── blogList.html
│ │ │ ├── editor.html
│ │ │ ├── navigation.html
│ │ │ └── signContainer.html
│ │ └── meta
│ │ ├── head.html
│ │ └── index.html
│ └── js
│ ├── account.js
│ ├── editor.js
│ ├── main.js
│ ├── owner.js
│ └── sign.js
└── database
└── maindata