2024-09-13
计算机
0
请注意,本文编写于 101 天前,最后修改于 101 天前,其中某些信息可能已经过时。

目录

Nginx 简介
主要特点
常见用例
1. 安装 Nginx
在 Ubuntu / Debian 上
在 CentOS/RHEL (8 及以上版本) / Rocky Linux / Fedora 上
2. 生成 SSL 证书
使用 OpenSSL 生成自签名证书
3. 配置 Nginx 使用 SSL
4. 测试 Nginx 配置并重新加载
总结

Nginx 简介

Nginx(发音为 "Engine-X")是一个高性能的开源 Web 服务器和反向代理服务器。它最初由 Igor Sysoev 开发,旨在处理大量并发连接,具有高效的资源利用率。Nginx 以其轻量级和高效性在 web 服务和反向代理领域得到了广泛的应用。

主要特点

  1. 高性能和高并发: Nginx 使用事件驱动的异步架构,这使得它能够有效地处理大量的并发连接。与传统的线程或进程模型相比,这种设计在处理高并发请求时更具效率。

  2. 反向代理和负载均衡: Nginx 支持反向代理功能,将客户端请求转发到后端服务器。它还具有负载均衡能力,能够将请求分发到多个后端服务器,以优化性能和提高可靠性。

  3. 静态文件服务: Nginx 能够高效地提供静态文件(如 HTML、CSS、JavaScript 和图像)。它可以缓存静态文件,进一步提高响应速度。

  4. 支持 SSL/TLS: Nginx 可以处理 SSL/TLS 加密,提供安全的 HTTPS 连接。它支持现代加密协议和算法,并能有效地处理 SSL 终端。

  5. 模块化: Nginx 具有模块化设计,允许用户根据需要启用或禁用功能。常见模块包括虚拟主机、负载均衡、缓存、压缩和访问控制等。

  6. 简洁的配置: Nginx 的配置文件结构清晰且简洁。它使用基于文本的配置文件,易于阅读和管理。配置文件支持包括、继承和层次化结构,使得复杂的配置变得更容易管理。

  7. 高可靠性和稳定性: Nginx 被设计为能够处理长时间的运行,而不会出现性能下降或崩溃的情况。它在生产环境中经受住了高负载的考验。

常见用例

  • Web 服务器: 作为静态内容的 Web 服务器,Nginx 能够快速地提供静态文件。
  • 反向代理: 将客户端请求转发到后端服务器,并处理负载均衡和缓存。
  • 负载均衡器: 将请求分发到多个后端服务器,提高网站的可靠性和性能。
  • API 网关: 管理 API 请求,进行身份验证、流量控制和监控。

在现代 web 环境中,确保网站的安全性至关重要。使用 HTTPS 加密传输的数据可以保护用户隐私和数据安全。如果你在开发或测试环境中需要配置 HTTPS,可以通过以下步骤在 Linux 系统中安装 Nginx、生成 SSL 证书并将 HTTP 请求重定向到 HTTPS。我们将使用 OpenSSL 或 mkcert 来生成证书。

1. 安装 Nginx

首先,我们需要在系统上安装 Nginx。不同 Linux 发行版的安装命令有所不同:

在 Ubuntu / Debian 上

bash
sudo apt update sudo apt install nginx

在 CentOS/RHEL (8 及以上版本) / Rocky Linux / Fedora 上

bash
sudo dnf update sudo dnf install epel-release sudo dnf install nginx

安装完成后,可以使用以下命令启动 Nginx 服务,并设置其在系统启动时自动启动:

bash
sudo systemctl start nginx sudo systemctl enable nginx

2. 生成 SSL 证书

在测试环境中,我们可以使用 OpenSSL 或 mkcert 生成自签名证书或本地受信证书。

使用 OpenSSL 生成自签名证书

  1. 生成私钥

    bash
    openssl genrsa -out /path/to/cert.key 2048
  2. 生成证书签名请求 (CSR)

    bash
    openssl req -new -key /path/to/cert.key -out /path/to/cert.csr
  3. 生成自签名证书

    bash
    openssl req -x509 -nodes -days 365 -signkey /path/to/cert.key -in /path/to/cert.csr -out /path/to/cert.crt

使用 mkcert 生成证书

  1. 安装 mkcert

    在 Ubuntu / Debian 上

    bash
    sudo apt install libnss3-tools wget -O mkcert https://dl.filippo.io/mkcert/latest?for=linux/amd64 chmod +x mkcert sudo mv mkcert /usr/local/bin/

    在 CentOS / RHEL / Fedora 上

    bash
    sudo dnf install nss-tool wget -O mkcert https://dl.filippo.io/mkcert/latest?for=linux/amd64 chmod +x mkcert sudo mv mkcert /usr/local/bin/
  2. 生成根证书和私钥

    bash
    mkcert -install
  3. 生成本地证书

    bash
    mkcert IP 127.0.0.1 ::1

    这会生成 *.pem*-key.pem 文件。

3. 配置 Nginx 使用 SSL

编辑 Nginx 配置文件,以启用 SSL 并设置 HTTP 到 HTTPS 的重定向。假设你使用的是默认配置文件 /etc/nginx/nginx.conf,你可以创建或修改 /etc/nginx/conf.d/default.conf 文件来添加 SSL 配置:

nginx
# For more information on configuration, see: # * Official English Documentation: http://nginx.org/en/docs/ # * Official Russian Documentation: http://nginx.org/ru/docs/ user nginx; worker_processes auto; error_log /var/log/nginx/error.log; pid /run/nginx.pid; # Load dynamic modules. See /usr/share/doc/nginx/README.dynamic. include /usr/share/nginx/modules/*.conf; events { worker_connections 1024; } http { log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 4096; include /etc/nginx/mime.types; default_type application/octet-stream; # Load modular configuration files from the /etc/nginx/conf.d directory. # See http://nginx.org/en/docs/ngx_core_module.html#include # for more information. include /etc/nginx/conf.d/*.conf; server { listen 80; listen [::]:80; server_name _; root /usr/share/nginx/html; # Load configuration files for the default server block. include /etc/nginx/default.d/*.conf; return 301 https://$host$request_uri; # error_page 404 /404.html; # location = /404.html { # } # error_page 500 502 503 504 /50x.html; # location = /50x.html { # } } # Settings for a TLS enabled server. # server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name _; root /usr/share/nginx/html; # ssl_certificate "/path/to/*.pem"; # 替换成证书路径 ssl_certificate_key "/path/to/*-key.pem"; # 替换成证书路径 ssl_session_cache shared:SSL:1m; ssl_session_timeout 10m; ssl_ciphers PROFILE=SYSTEM; ssl_prefer_server_ciphers on; # # # Load configuration files for the default server block. # include /etc/nginx/default.d/*.conf; # error_page 404 /404.html; location = /40x.html { } # error_page 500 502 503 504 /50x.html; location = /50x.html { } } }

4. 测试 Nginx 配置并重新加载

在修改了配置文件后,检查 Nginx 配置是否正确:

bash
sudo nginx -t

如果没有错误,重新加载 Nginx 配置:

bash
sudo systemctl reload nginx

总结

你现在已经成功安装了 Nginx、生成了 SSL 证书,并配置了 HTTP 到 HTTPS 的重定向。通过这些步骤,你可以确保你的 Web 服务器使用加密的 HTTPS 连接,增加了安全性。如果在实际生产环境中使用,建议使用由认证机构签发的证书。

如果对你有用的话,可以打赏哦
打赏
ali pay
wechat pay

本文作者:DYMripper

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!