nginx配置

lamda表达式先驱發表於2024-10-22

為什麼用postman請求本地的介面 前面是http不是https http://localhost:18080/api/v3/process/selectSubTableData

在開發和測試環境中,使用 HTTP 而不是 HTTPS 來請求本地介面是非常常見的做法,原因包括:

  1. 簡化配置:在本地開發時,通常不需要設定 HTTPS,這樣可以避免配置 SSL/TLS 證書的複雜性。

  2. 效能:HTTPS 需要額外的加密和解密過程,這可能會稍微影響效能。在開發和測試階段,效能不是主要關注點,因此通常使用 HTTP。

  3. 工具支援:像 Postman 這樣的工具預設使用 HTTP 來請求介面,因為它們主要用於開發和測試,而不是生產環境。

  4. 安全性要求較低:在本地環境中,資料傳輸的安全性要求通常較低,因為資料不會在公共網路上傳輸。

  5. 開發方便:使用 HTTP 可以讓開發者更容易地進行介面除錯和測試,因為大多數開發工具和瀏覽器都原生支援 HTTP。

  6. 成本:獲取和維護有效的 SSL/TLS 證書需要一定的成本,而在開發和測試環境中,這些成本通常是不必要的。

  7. 相容性:某些開發環境和工具可能不支援 HTTPS,或者配置起來比較麻煩。

在您提供的例子中,http://localhost:18080/api/v3/process/selectSubTableData 使用 HTTP 協議和 localhost 作為主機名,這表明這是一個本地介面呼叫,通常用於開發或測試目的。埠 18080 是該服務在本地機器上監聽的埠號。

當您的應用準備部署到生產環境時,通常會使用 HTTPS 來確保資料傳輸的安全性,防止資料在傳輸過程中被竊聽或篡改。在生產環境中,您需要為域名獲取有效的 SSL/TLS 證書,並在伺服器上配置它們。

如果是生產環境, 在哪裡配置https, yml檔案麼 還是在哪裡配置

在生產環境中,配置 HTTPS 通常涉及以下幾個步驟:

  1. 獲取 SSL/TLS 證書:

    • 從證書頒發機構(CA)購買證書,或者使用 Let's Encrypt 等免費服務獲取免費證書。
    • 證書通常包括一個私鑰檔案、一個證書檔案(公鑰),以及可能的中間證書。
  2. 配置 Web 伺服器:

    • 對於 Nginx,可以在 Nginx 配置檔案中配置 SSL/TLS。例如:
      nginx
      server {
          listen 443 ssl;
          server_name example.com;
      
          ssl_certificate /path/to/cert.pem;
          ssl_certificate_key /path/to/key.pem;
          ssl_trusted_certificate /path/to/chain.pem;
      
          location / {
              # Proxy settings or static files
          }
      }
    • 對於 Apache,可以在 Apache 的配置檔案中設定 SSL/TLS。例如:
      apache
      <VirtualHost *:443>
          ServerName example.com
          DocumentRoot /var/www/html
      
          SSLEngine on
          SSLCertificateFile /path/to/cert.pem
          SSLCertificateKeyFile /path/to/key.pem
          SSLCertificateChainFile /path/to/chain.pem
      
          # Other directives...
      </VirtualHost>
    • 如果您的應用是自行託管的,並且直接處理 HTTPS,那麼您需要在應用的配置中指定證書。例如,在 Spring Boot 應用中,您可以在 application.ymlapplication.properties 檔案中配置 SSL/TLS:
      yaml
      server:
        port: 443
        ssl:
          enabled: true
          key-store: classpath:keystore.jks
          key-store-password: password
          key-alias: mykey
          key-password: password
      或者使用 Java 系統屬性:
      properties
      server.port=443
      server.ssl.enabled=true
      server.ssl.key-store=classpath:keystore.jks
      server.ssl.key-store-password=password
      server.ssl.key-alias=mykey
      server.ssl.key-password=password
    • 對於其他語言和框架,通常有類似的配置方法。
  3. 配置應用伺服器:

    • 如果您的應用執行在像 Tomcat、Jetty 或 Undertow 這樣的應用伺服器上,您需要在伺服器的配置檔案或管理介面中配置 SSL/TLS。
  4. 更新 DNS 和 Firewall 規則:

    • 確保 DNS 設定正確,將您的域名指向應用伺服器的公網 IP。
    • 更新防火牆規則,允許 443 埠的流量。
  5. 測試 HTTPS 配置:

    • 在配置完成後,使用瀏覽器或 curl 命令測試 HTTPS 連線是否正常工作。

請注意,配置 HTTPS 需要一定的網路安全知識,確保正確配置證書和加密設定,以保護資料傳輸的安全。

listen 443 ssl;
    server_name example.com;

    ssl_certificate /path/to/cert.pem;
    ssl_certificate_key /path/to/key.pem;
    ssl_trusted_certificate /path/to/chain.pem;

    location / {
        # Proxy settings or static files
    }  解釋一下

這段配置是 Nginx 伺服器的配置片段,用於設定一個 HTTPS 伺服器,監聽 443 埠,這是 HTTPS 服務的標準埠。下面是每個指令的詳細解釋:

  1. listen 443 ssl;

    • 這行配置告訴 Nginx 監聽 443 埠,並且啟用 SSL 加密。ssl 引數指示 Nginx 在這個監聽埠上啟用 SSL。
  2. server_name example.com;

    • 這行配置設定了伺服器塊的域名,即 server_name 指令定義了這個虛擬主機的域名。在這裡,它指定了域名 example.com。當訪問這個域名時,Nginx 會使用這個伺服器塊的配置來處理請求。
  3. ssl_certificate /path/to/cert.pem;

    • 這行配置指定了 SSL 證書檔案的位置。cert.pem 是 SSL 證書檔案,包含了網站的公鑰。這個檔案應該位於指定的路徑中。
  4. ssl_certificate_key /path/to/key.pem;

    • 這行配置指定了 SSL 私鑰檔案的位置。key.pem 是 SSL 私鑰檔案,它必須保密,不應該洩露給未授權的人員。
  5. ssl_trusted_certificate /path/to/chain.pem;

    • 這行配置指定了證書鏈檔案的位置。chain.pem 檔案包含了證書頒發機構(CA)的證書,用來建立證書的信任鏈。如果證書是自簽名的或者只有一個證書檔案,可能不需要這個指令。
  6. location / { ... }

    • 這是一個 location 塊,定義了當請求到達伺服器時如何處理請求。在這個例子中,它匹配根 URL(/),即網站的首頁。在這個塊中,你可以定義反向代理設定(將請求轉發到後端伺服器),或者提供靜態檔案服務。例如,你可以配置 Nginx 將請求轉發到一個執行在特定埠上的 Spring Boot 應用。

請注意,/path/to/cert.pem/path/to/key.pem/path/to/chain.pem 是證書檔案的路徑佔位符,你需要將它們替換為實際的證書檔案路徑。這些檔案應該提前準備好,並且放置在伺服器上安全的位置。

在配置 HTTPS 時,確保你的證書和私鑰是有效的,並且與你的域名匹配。配置完成後,你需要重新載入或重啟 Nginx 以使配置生效:

sh
sudo nginx -t # 檢查配置檔案是否有語法錯誤
sudo systemctl reload nginx # 重新載入配置檔案

或者:

sudo nginx -s reload # 另一種重新載入配置的方式