Nginx 是什麼?認識 Web Server 與 Nginx入門教學

nginx feature image

網路已經變成了不可或缺的一部分。每一次我們訪問一個網站或者是使用一款線上應用程式,後台就有一個強大的網路伺服器在工作。今天,我們將要為您介紹其中一種非常流行的網路伺服器,它就是 Nginx


什麼是 Web Server

Web伺服器(Web Server)是一種能提供網頁訊息的伺服器。當網路瀏覽器(例如Google Chrome、Firefox或Safari)向Web伺服器發出請求(Request),該伺服器會回應(Response)請求並傳送請求的網頁內容,這通常包含HTML文檔、圖片、樣式表(CSS)、JavaScript等。

除了基本的網頁伺服功能,許多Web伺服器還提供其他服務,包括SSL加密、URL重寫、負載均衡、以及其他進階的HTTP服務。他們也能執行服務端程式碼,例如PHP、Python、Ruby、Java等,來動態生成網頁內容。

一個網站可能運行在一個或者多個Web伺服器上,這取決於該網站的流量、網站架構、以及其他需求。

常見的Web伺服器軟體有Apache、Nginx、Microsoft的Internet Information Services(IIS)以及Google的GWS(Google Web Server)等。

JavaScript 全端開發課程,16 週進度班帶你半年轉職工程師


什麼是 Nginx?

Nginx 是一款開源的網路伺服器,能夠用於多種網路服務,包括 HTTP 伺服器、反向代理伺服器、郵件代理伺服器等。Nginx 設計之初,就專為處理高並發、高流量的網路服務所需求的需求。其高效的效能與穩定的運作,讓 Nginx 在全球許多知名的網站中,都有其身影。


Nginx 有什麼功用?

Nginx 最主要的功能是作為網頁伺服器,處理來自網路的 HTTP 請求,並返回相對應的內容。另外,Nginx 也常常被使用為反向代理伺服器,這表示 Nginx 會在網站與使用者之間擔任傳遞訊息的角色,這樣可以大大提升網站的效能,以及提供更多的靈活度。此外,Nginx 也能提供負載均衡的服務,這樣可以幫助分散伺服器的負擔,提供更好的效能。


Nginx和Apache的差異

Nginx和Apache都是非常流行的Web服務器軟體,被全世界的許多網站所使用。儘管他們都能提供Web服務器的核心功能,但他們在許多細節上存在一些不同

  1. 性能:Nginx因其事件驅動架構而著名,能夠更好地處理大量的同時連線,尤其是靜態內容的傳輸,所以在高流量的情況下,Nginx通常能提供較高的性能。而Apache則使用基於進程或線程的模型,這可能導致在高流量情況下性能下降。
  2. 模塊和靈活性:Apache的模塊系統可以讓開發者根據需求來擴展其功能。許多功能,如SSL加密、URL重寫等都是以模塊的形式存在。這使得Apache在靈活性和可客製化方面有較大的優勢。雖然Nginx也提供模塊,但其模塊必須在編譯Nginx的時候就加入,無法像Apache一樣動態載入。
  3. 配置和管理:Apache的.htaccess檔案讓網站管理員可以對單個目錄進行詳細的配置,這對於共享主機或有許多獨立用戶的情況特別有用。但這也可能導致性能下降,因為Apache需要為每個請求檢查並處理.htaccess文件。另一方面,Nginx不支援這樣的功能,但其配置文件通常被認為更簡潔和直觀。
  4. 對PHP的支援:Apache可以透過mod_php模塊直接處理PHP,這使得Apache對PHP的支援更好。雖然Nginx也可以通過FastCGI與PHP進程通信來處理PHP,但這需要更多的配置。

Nginx 基礎入門教學

要開始使用 Nginx,我們首先需要在我們的機器上安裝 Nginx。在 Ubuntu 系統中,可以透過以下的命令進行安裝:

sudo apt update
sudo apt install nginx

安裝完成後,我們可以透過以下命令檢查 Nginx 是否已經成功安裝並開始運作:

systemctl status nginx

在瀏覽器中輸入您的伺服器 IP,如果看到歡迎頁面,表示 Nginx 已經成功運作。

Nginx 的設定檔案通常會存放在 /etc/nginx 目錄下,而網站的設定檔案則會在 /etc/nginx/sites-available 目錄中。要啟用網站,需要將設定檔案連結到 /etc/nginx/sites-enabled 目錄。

基本的 Nginx 網站設定檔案可能會看起來像這樣:

server {
    listen 80 default_server;
    listen [::]:80 default_server;

    root /var/www/html;
    index index.html index.htm index.nginx-debian.html;

    server_name _;

    location / {
        try_files $uri $uri/ =404;
    }
}

每當修改了 Nginx 的設定檔案後,我們都需要重新載入或重啟 Nginx,讓新的設定生效:

sudo systemctl reload nginx
# 或者
sudo systemctl restart nginx

結論

Nginx 是一款強大的網路伺服器,無論是在處理大量的流量,或是提供靈活的網路服務,Nginx 都能提供卓越的表現。在本篇文章中,我們介紹了 Nginx 的基本概念,並提供了簡單的入門教學。希望您能在閱讀之後,能夠對 Nginx 有更深入的了解。