2 回答

TA貢獻1856條經驗 獲得超17個贊
沒有什么可以阻止您直接處理來自 Go 的請求。
另一方面,nginx 提供了一些開箱即用的功能,這些功能可能很有用,例如:
處理許多虛擬服務器(例如,已經開始響應
app.example.com
并打開不同的應用程序www.example.com
)某些路徑中的 http 基本身份驗證,例如 www.example.com/secure
訪問日志
等等
所有這些都可以在 go 中完成,但需要編程,而在 nginx 中,這只是編輯.conf
文件并重新加載配置的問題。Nginx 甚至不需要重新啟動即可進行此更改。
(從“進程”的角度來看,nginx 可以由操作員管理,具有 root 權限,在眾所周知的端口上運行,而開發人員將他們的應用程序部署在更高的端口上。)

TA貢獻1828條經驗 獲得超3個贊
這已經被問過幾次[ 1 ],但為了后代:
這取決于。
開箱即用,將 nginx 作為反向代理放在前面會給你:
訪問日志
錯誤日志
簡單的 SSL 終止
SPDY 支持
gzip 支持
在幾行中為某些路由設置 HTTP 標頭的簡單方法
非??焖俚撵o態資產服務(如果您在 S3/等之外提供服務,這不是那么重要)
轉到HTTP服務器是非常好的,但你將需要推倒重來做一些事情(這是罰款:它并不意味著所有人的所有需要)。
我一直發現將 nginx 放在前面更容易——這是它的優點——讓它做“網絡服務器”的事情。我的 Go 應用程序執行應用程序的工作,并且只有最少的標題/等。它需要。不要認為將 nginx 放在前面是一件“壞事”。
此外,為了擴展我的回答,還有一個崩潰彈性問題:你的 Go 應用程序不受配置語言的限制,可以做很多事情。
其中一些事情可能會使您的程序崩潰。使用 nginx(或 HAProxy,或 Varnish 等)作為反向代理可以為您提供一些請求緩沖(以允許您的程序重新啟動)和/或從其本地緩存(即您的靜態主頁)提供陳舊內容,這可能比讓瀏覽器超時并提供“無法連接到服務器錯誤”更好。
另一方面,如果您正在構建小型內部服務,則帶有您自己的日志記錄庫的“裸”Go Web 服務器更易于管理(在操作方面)。
如果您確實想在 Go 程序中保留所有內容,請查看gzip 的gorilla/handlers、日志記錄和代理標頭中間件,以及用于日志輪換的lumberjack(否則您可以使用系統的日志記錄工具)。
- 2 回答
- 0 關注
- 211 瀏覽
添加回答
舉報