使用Linux配置Nginx輕鬆搭建高性能Web服務器

一、安裝Nginx

要想搭建一個高性能的Web服務器,首先需要安裝Nginx。在Linux系統的終端中輸入以下命令:

sudo apt-get update
sudo apt-get install nginx

安裝完成後,需要啟動Nginx並設置為開機自啟動。

sudo systemctl start nginx
sudo systemctl enable nginx

通過以上命令,已經成功安裝、啟動和設置Nginx自啟動了。

二、配置Nginx

在安裝Nginx後,需要對Nginx進行配置才能真正搭建一個高性能的Web服務器。以下是一個簡單的Nginx配置文件示例:

user www-data;
worker_processes auto;
pid /run/nginx.pid;

events {
    worker_connections 768;
    #multi_accept on;
}

http {

    ##
    # Basic Settings
    ##

    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 65;
    types_hash_max_size 2048;
    server_tokens off;

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

        # Add index.php to the list if you are using PHP
        index index.html index.htm index.nginx-debian.html;

        server_name _;

        location / {
            # First attempt to serve request as file, then fall back to
            # a2templating
            try_files $uri $uri/ =404;
            add_header Allow "GET, POST, HEAD" always;
        }

        location /api {
            proxy_pass http://localhost:3000;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }

        location ~ /\.ht {
            deny all;
        }

        location ~ \.php$ {
            include snippets/fastcgi-php.conf;
            fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
        }
    }
}

以上配置文件中,我們設置了Nginx的worker進程數量、日誌路徑、監聽的端口號、設置默認頁面等信息。另外,我們在location節點下面可以看到設置了代理服務器(/api)和php相關信息。

三、配置SSL證書

SSL證書可以保證網站的安全性,在配置好Nginx後,可以進一步配置SSL證書來保證網站安全。

首先需要安裝openssl:

sudo apt-get install openssl

接着,在/etc/nginx/sites-available目錄下新建一個默認網站配置文件(我們假設文件名為default.conf),並在其中加上以下內容:

server {
    listen 80 default_server;
    listen [::]:80 default_server;
    server_name example.com www.example.com;

    return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;

    server_name example.com www.example.com;

    ssl_certificate /path/to/certificate.pem;
    ssl_certificate_key /path/to/key.pem;

    # SSL security settings
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECD$
    ssl_session_timeout 1d;
    ssl_session_cache shared:SSL:50m;
    ssl_session_tickets off;

    # Hide server version
    server_tokens off;

    location / {
        ...
    }
}

以上代碼中的ssl_certificate和ssl_certificate_key需要修改為您自己的SSL證書文件。在修改完成後,需要重新啟動Nginx。

四、性能優化

為了使Nginx的性能更好,在配置中可以添加一些優化參數,例如:

worker_processes auto;

events {
    worker_connections 100000;
    use epoll;
    multi_accept on;
}

http {
    ...
    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 65;
}

其中,worker_processes設置為auto表示Nginx將會根據服務器的CPU核心數自動選擇Worker進程數量。events節點下設置了worker_connections表示每個Worker進程可同時處理的最大連接數,use epoll代表使用epoll模式,multi_accept on代表允許一次性接收多個請求。

五、防止惡意攻擊

Nginx提供了一些限制和阻止惡意請求的功能。例如,在配置文件中可以設置最大連接數、最大請求速率等:

http {
    ...
    limit_conn_zone $binary_remote_addr zone=limitzone:10m;
    limit_req_zone $binary_remote_addr zone=limitzone:10m rate=20r/s;

    server {
        ...
        # Max connections from one IP address
        limit_conn limitzone 10;

        # Limit request rate to prevent DDoS attacks
        limit_req zone=limitzone burst=30 nodelay;
    }
}

以上配置將會限制來自同一個IP地址的最大連接數為10,最多每秒鐘處理20個請求。同時,一旦超過請求速率,將會拒絕處理請求。

六、總結

通過以上幾個方面的配置,我們就可以在Linux系統上搭建一個高性能的Web服務器。在實際的生產環境中,還需根據不同的業務需求進行更加詳細的配置。但是,以上提到的基礎設置和性能優化設置,在絕大多數情況下都能保證服務器的高性能和安全性。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/258646.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-15 12:50
下一篇 2024-12-15 12:50

相關推薦

  • 服務器安裝Python的完整指南

    本文將為您提供服務器安裝Python的完整指南。無論您是一位新手還是經驗豐富的開發者,您都可以通過本文輕鬆地完成Python的安裝過程。以下是本文的具體內容: 一、下載Python…

    編程 2025-04-29
  • STUN 服務器

    STUN 服務器是一個網絡服務器,可以協助網絡設備(例如 VoIP 設備)解決 NAT 穿透、防火牆等問題,使得設備可以正常地進行數據傳輸。本文將從多個方面對 STUN 服務器做詳…

    編程 2025-04-29
  • 解決docker-compose 容器時間和服務器時間不同步問題

    docker-compose是一種工具,能夠讓您使用YAML文件來定義和運行多個容器。然而,有時候容器的時間與服務器時間不同步,導致一些不必要的錯誤和麻煩。以下是解決方法的詳細介紹…

    編程 2025-04-29
  • leveldb和unqlite:兩個高性能的數據庫存儲引擎

    本文將介紹兩款高性能的數據庫存儲引擎:leveldb和unqlite,並從多個方面對它們進行詳細的闡述。 一、leveldb:輕量級的鍵值存儲引擎 1、leveldb概述: lev…

    編程 2025-04-28
  • Mapster:一個高性能的對象映射庫

    本文將深入介紹furion.extras.objectmapper.mapster,一個高性能的對象映射庫,解釋它是如何工作的以及如何在你的項目中使用它。 一、輕鬆地實現對象之間的…

    編程 2025-04-28
  • 如何選擇MySQL服務器文件權限

    MySQL是一種流行的關係型數據庫管理系統。在安裝MySQL時,選擇正確的文件權限是保證安全和性能的重要步驟。以下是一些指導您選擇正確權限的建議。 一、權限選擇 MySQL服務器需…

    編程 2025-04-27
  • JPRC – 輕鬆創建可讀性強的 JSON API

    本文將介紹一個全新的 JSON API 框架 JPRC,通過該框架,您可以輕鬆創建可讀性強的 JSON API,提高您的項目開發效率和代碼可維護性。接下來將從以下幾個方面對 JPR…

    編程 2025-04-27
  • 如何將Python代碼部署到服務器

    Python是一種高級編程語言,常被用於數據分析、機器學習、Web開發等不同領域的工作。但是,只有將Python代碼部署到服務器上,才能讓其真正發揮作用。 一、選擇服務器 要將Py…

    編程 2025-04-27
  • Python服務器客戶端

    本文將從以下幾個方面對Python服務器客戶端進行詳細闡述:socket編程、HTTP協議、Web框架、異步IO。 一、socket編程 Python的socket模塊是為網絡編程…

    編程 2025-04-27
  • 如何在Linux中添加用戶並修改配置文件

    本文將從多個方面詳細介紹在Linux系統下如何添加新用戶並修改配置文件 一、添加新用戶 在Linux系統下創建新用戶非常簡單,只需使用adduser命令即可。使用以下命令添加新用戶…

    編程 2025-04-27

發表回復

登錄後才能評論