【Nginx】配置Nginx以支持主域名和二级域名


生命就像是一场告别

从起点对一切说再见

你拥有的仅仅是伤痕

在回望来路的时候

那天我们相遇在街上

彼此寒暄并报以微笑

我们相互拥抱挥手道别

转过身后已泪流满面

🎵 蔡健雅《当我想你的时候》


Nginx是一款高性能的Web服务器和反向代理服务器,广泛用于提供静态内容服务、负载均衡以及作为HTTP缓存。在许多情况下,我们需要通过Nginx来同时管理主域名和二级域名的流量。例如,主域名(如www.example.com)用于提供公司的主要网站内容,而二级域名(如api.example.com)用于提供API服务。本文将通过一个示例配置,展示如何使用Nginx来配置主域名和二级域名,并解释配置中的关键部分。

Nginx配置代码示例

以下是一个Nginx配置示例,其中包括了两个不同的server块,分别用于主域名www.lpv.cc和二级域名spider.lpv.cc的配置:

bash 复制代码
# 配置主域名 www.lpv.cc 的HTTPS服务
server {
    listen 443 ssl;
    server_name www.ss33.com;  # 指定域名

    ssl_certificate cert/ss33.com.pem;  # SSL证书文件路径
    ssl_certificate_key cert/ss33.com.key;  # SSL证书私钥文件路径

    ssl_session_cache shared:SSL:1m;
    ssl_session_timeout 5m;

    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;

    location / {
        root /var/www/movie/admin;  # 静态文件的根目录
        index index.html index.htm;  # 默认的索引文件
    }
}
# HTTP到HTTPS的重定向
server {
    listen 80;
    server_name www.ss33.cc;
    return 301 https://$host$request_uri;  # 301重定向到HTTPS
}

# 配置二级域名 spider.lpv.cc 的HTTPS服务
server {
    listen 443 ssl;
    server_name spider.ss33.cc;  # 指定二级域名

    ssl_certificate cert/spider.ss33.cc.pem;  # SSL证书文件路径
    ssl_certificate_key cert/spider.ss33.cc.key;  # SSL证书私钥文件路径

    ssl_session_cache shared:SSL:1m;
    ssl_session_timeout 5m;

    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;

    location / {
        proxy_pass http://127.0.0.1:2331;  # 将请求代理到本地的2331端口
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

# HTTP到HTTPS的重定向
server {
    listen 80;
    server_name spider.ss33.cc;
    return 301 https://$host$request_uri;  # 301重定向到HTTPS
}

配置解释

HTTPS配置

对于主域名和二级域名,我们通过配置listen 443 ssl;来监听443端口,并启用SSL。server_name指令指定了该配置适用的域名。

ssl_certificate和ssl_certificate_key指令指定了SSL证书和私钥的路径。这些证书用于启用HTTPS,确保数据传输的安全性。

ssl_session_cachessl_session_timeout优化了SSL/TLS会话的性能和时长。

ssl_ciphersssl_protocols指定了支持的加密套件和TLS协议版本,以确保使用最佳的安全实践。

ssl_prefer_server_ciphers on;确保服务器优先选择它支持的加密算法,这有助于提高安全性。

静态内容和反向代理配置

对于www.ss33.com主域名,我们通过location /块指定了静态内容的根目录root /var/www/movie/admin;,并设置了默认的索引文件为index.htmlindex.htm。这意味着当用户访问www.ss33.com时,Nginx将会提供/var/www/movie/admin目录下的静态内容。

对于spider.ss33.com二级域名,我们通过location /块中的proxy_pass http://127.0.0.1:2331;将所有请求代理到了本地的2331端口。此配置通常用于当Nginx背后有一个Web应用或API服务运行在该端口时。通过proxy_set_header指令,我们确保了原始请求的一些关键头部信息(如Host、真实IP、转发信息等)被正确地传递给后端服务。

HTTP到HTTPS的重定向

我们为每个域名配置了一个额外的server块,用于监听80端口(HTTP),并通过return 301 https://$host$request_uri;实现了自动重定向到对应的HTTPS地址。这样做的目的是确保所有的流量都通过安全的HTTPS连接,提高网站的安全性和可靠性。

配置的关键点

  • 证书路径:确保SSL证书和私钥的路径正确,并且文件权限允许Nginx访问。

  • 域名配置:server_name指令需正确设置为你的主域名和二级域名。

  • 静态内容与代理服务:根据你的实际需求选择提供静态内容还是通过Nginx代理到后端服务。对于静态内容,设置正确的root路径;对于代理服务,配置正确的proxy_pass目标地址及相关头部信息。

  • 安全性配置:使用现代的加密算法和协议(如TLS 1.2和TLS 1.3),禁用已知不安全的算法。

  • HTTP到HTTPS重定向:对于所有通过HTTP访问的请求,确保它们被重定向到HTTPS,以利用SSL/TLS提供的加密和安全性。

结语

通过这份Nginx配置,你可以为你的主域名和二级域名提供安全、高效的Web服务,并根据需要轻松地提供静态内容或将请求代理到后端应用。记得在应用新配置后重载或重启Nginx服务,以使更改生效。

相关推荐
Linux运维技术栈24 分钟前
Ansible(自动化运维)环境搭建及ansible-vault加密配置
运维·自动化·ansible
Bessssss2 小时前
centos权限大集合,覆盖多种权限类型,解惑权限后有“. + t s”问题!
linux·运维·centos
苹果醋32 小时前
Golang的文件加密工具
运维·vue.js·spring boot·nginx·课程设计
jwensh2 小时前
【Jenkins】Declarative和Scripted两种脚本模式有什么具体的区别
运维·前端·jenkins
大熊程序猿3 小时前
xxl-job docker 安装
运维·docker·容器
董健正3 小时前
centos制作离线安装包
linux·运维·centos
咏颜4 小时前
Ubuntu离线安装Docker容器
linux·运维·服务器·经验分享·ubuntu·docker
DexterLien5 小时前
Debian 12 安装配置 fail2ban 保护 SSH 访问
运维·debian·ssh·fail2ban
娶不到胡一菲的汪大东5 小时前
Shell脚本
linux·运维·ubuntu
xserver26 小时前
ensp 基于静态NAT发布公司网站服务器,
运维·服务器