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

傷城~ 2024-04-17 11:35 150阅读 0赞

生命就像是一场告别
从起点对一切说再见
你拥有的仅仅是伤痕
在回望来路的时候
那天我们相遇在街上
彼此寒暄并报以微笑
我们相互拥抱挥手道别
转过身后已泪流满面
? 蔡健雅《当我想你的时候》


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

Nginx配置代码示例

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

  1. # 配置主域名 www.lpv.cc 的HTTPS服务
  2. server {
  3. listen 443 ssl;
  4. server_name www.ss33.com; # 指定域名
  5. ssl_certificate cert/ss33.com.pem; # SSL证书文件路径
  6. ssl_certificate_key cert/ss33.com.key; # SSL证书私钥文件路径
  7. ssl_session_cache shared:SSL:1m;
  8. ssl_session_timeout 5m;
  9. ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
  10. ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
  11. ssl_prefer_server_ciphers on;
  12. location / {
  13. root /var/www/movie/admin; # 静态文件的根目录
  14. index index.html index.htm; # 默认的索引文件
  15. }
  16. }
  17. # HTTP到HTTPS的重定向
  18. server {
  19. listen 80;
  20. server_name www.ss33.cc;
  21. return 301 https://$host$request_uri; # 301重定向到HTTPS
  22. }
  23. # 配置二级域名 spider.lpv.cc 的HTTPS服务
  24. server {
  25. listen 443 ssl;
  26. server_name spider.ss33.cc; # 指定二级域名
  27. ssl_certificate cert/spider.ss33.cc.pem; # SSL证书文件路径
  28. ssl_certificate_key cert/spider.ss33.cc.key; # SSL证书私钥文件路径
  29. ssl_session_cache shared:SSL:1m;
  30. ssl_session_timeout 5m;
  31. ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
  32. ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
  33. ssl_prefer_server_ciphers on;
  34. location / {
  35. proxy_pass http://127.0.0.1:2331; # 将请求代理到本地的2331端口
  36. proxy_set_header Host $host;
  37. proxy_set_header X-Real-IP $remote_addr;
  38. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  39. proxy_set_header X-Forwarded-Proto $scheme;
  40. }
  41. }
  42. # HTTP到HTTPS的重定向
  43. server {
  44. listen 80;
  45. server_name spider.ss33.cc;
  46. return 301 https://$host$request_uri; # 301重定向到HTTPS
  47. }

配置解释

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服务,以使更改生效。

发表评论

表情:
评论列表 (有 0 条评论,150人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Nginx配置二级域名

    当一个域名需要使用在两个项目上后,我们就需要使用到二级域名,在 Nginx 中配置二级域名如下: 1、原始配置文件如下 worker_processes 1;