亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 Web 應用程序中使用 nginx 服務器轉到 Web 服務器

在 Web 應用程序中使用 nginx 服務器轉到 Web 服務器

Go
陪伴而非守候 2021-11-08 09:57:47
我無法從 Google 搜索中找到這個答案,似乎沒有人清楚地解釋純 Go 網絡服務器和 nginx 反向代理之間的區別。前面大家好像都用nginx做web應用。我的問題是,雖然 Go 具有所有 http 服務功能,但在純 Go Web 服務器上使用 nginx 有什么好處?在大多數情況下,我們為這里的所有路由設置了 Go 網絡服務器,并在前面設置了 nginx 配置。就像是:limit_req_zone $binary_remote_addr zone=limit:10m rate=2r/s;server {    listen 80;    log_format lf '[$time_local] $remote_addr ;    access_log /var/log/nginx/access.log lf;    error_log /var/log/nginx/error.log;    set_real_ip_from 0.0.0.0/0;    real_ip_header X-Forwarded-For;    real_ip_recursive on;    server_name 1.2.3.4 mywebsite.com;}當我們有這個 Go 時:func handler(w http.ResponseWriter, r *http.Request) {    fmt.Fprintf(w, "Hi there, I love %s!", r.URL.Path[1:])}func main() {    http.HandleFunc("/", handler)    http.ListenAndServe(":8080", nil)}nginx 和 Go Web 服務器的流量是否不同?如果沒有,為什么我們有兩層 Web 服務器?請幫助我理解這一點。
查看完整描述

2 回答

?
慕慕森

TA貢獻1856條經驗 獲得超17個贊

沒有什么可以阻止您直接處理來自 Go 的請求。

另一方面,nginx 提供了一些開箱即用的功能,這些功能可能很有用,例如:

  • 處理許多虛擬服務器(例如,已經開始響應app.example.com并打開不同的應用程序www.example.com

  • 某些路徑中的 http 基本身份驗證,例如 www.example.com/secure

  • 訪問日志

  • 等等

所有這些都可以在 go 中完成,但需要編程,而在 nginx 中,這只是編輯.conf文件并重新加載配置的問題。Nginx 甚至不需要重新啟動即可進行此更改。

(從“進程”的角度來看,nginx 可以由操作員管理,具有 root 權限,在眾所周知的端口上運行,而開發人員將他們的應用程序部署在更高的端口上。)


查看完整回答
反對 回復 2021-11-08
?
子衿沉夜

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(否則您可以使用系統的日志記錄工具)。


查看完整回答
反對 回復 2021-11-08
  • 2 回答
  • 0 關注
  • 211 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號