国密版Nginx与官方版Nginx在核心目录结构上没有本质区别,它们的差异主要体现在实现方式、依赖库和配置细节上。
国密版Nginx本质上是官方Nginx的一个“增强版”,通过替换底层的加密库(如将`OpenSSL`换为`GmSSL`)来获得对国密算法(SM2/SM3/SM4)的支持。因此,其目录结构继承了官方版的设计,主要差异体现在以下几个方面:
一、安装与默认路径
官方版Nginx:安装路径非常灵活,可通过`./configure`的`--prefix`参数指定,常见路径有`/etc/nginx`、`/usr/local/nginx`等。
国密版Nginx:虽然路径也可定制,但大量实践和文档显示,其默认或推荐的安装路径通常是 `/usr/local/nginx`。这可能是为了方便与基于`GmSSL`的编译环境集成。
二、 核心依赖库差异
这是两者最根本的区别,虽然不直接体现在目录结构上,但会影响编译和运行环境。
官方版Nginx:依赖标准的 OpenSSL 库来实现SSL/TLS功能。
国密版Nginx:依赖支持国密算法的 GmSSL 库。编译时,需要指定国密OpenSSL的路径。这个`GmSSL`库通常也会被安装在独立目录,例如 `/usr/local/gmssl`。
三、关键目录与文件对比
下表对比了安装后主要目录的异同:
目录/文件 官方版 Nginx 国密版 Nginx 主要区别说明
主配置目录 `/etc/nginx/` 或 `/usr/local/nginx/conf/` `/usr/local/nginx/conf/` 国密版更常见于`/usr/local/nginx/conf`。
主配置文件 `nginx.conf` `nginx.conf` 文件名相同,但内容因国密参数而异。
可执行文件 `/usr/sbin/nginx`或`/usr/local/nginx/sbin/nginx` `/usr/local/nginx/sbin/nginx` 国密版二进制文件常位于此。
静态网页目录 `html/` | `html/` 目录结构相同。
日志目录 `/var/log/nginx/` 或安装目录下的`logs/` 安装目录下的`logs/` (如`/usr/local/nginx/logs/`) 国密版默认日志位置可能不同。
SSL证书目录 无强制规定,常见于`conf/`下 在`conf/`下创建`ssl`目录是常见实践 国密版为存放 双证书(签名证书和加密证书)提供了便利。
四、配置层面的关键差异
除了目录,配置方式也有显著不同,这是使用国密版时最需要注意的地方:
证书类型与配置指令:官方版通常只需配置一个证书和私钥。而国密版需要配置双证书:一个用于签名,一个用于加密。配置时需使用`ssl_certificate`和`ssl_certificate_key`指令分别指定。
密码套件与协议:国密版Nginx的`nginx.conf`中,`ssl_ciphers`指令需要明确指定国密套件,如 `SM2-WITH-SMS4-SM3`。
总结
简单来说,国密版Nginx可以看作是官方Nginx的一个“国密增强版”。它继承了官方版的主要目录结构,但通过替换底层的加密库(GmSSL) 和调整安装路径、配置文件,实现了对国密算法的支持。
因此,如果你熟悉官方版Nginx,迁移到国密版的主要学习成本不在于目录结构,而在于理解国密双证书的配置逻辑和新的密码套件。