首页 > 系统相关 >Nginx多域名,多证书,多服务配置,实用版

Nginx多域名,多证书,多服务配置,实用版

时间:2024-09-02 10:21:19浏览次数:15  
标签:ssl nginx xxx html server Nginx 域名 证书 com

本文主要讲解在Nginx配置多个域名,多证书,多服务,核心是nginx配置文件。

1. 情景介绍

  • 现在有一个项目,有测试环境和正式环境,已经为两个环境各自申请到域名和ssl证书
  • 正式环境
    • 域名:xxx.com www.xxx.com
    • 证书:xxx.com_bundle.pemxxx.com.key
  • 测试环境
    • 域名:test-xxx.com www.test-xxx.com
    • 证书:test-xxx.com_bundle.pemtest-xxx.com.key
  • 目前想要通过Nginx他们配置到同一台服务器上,要求如下
    • 实现http重定向到https
    • 添加域名和证书
  • 目前已经在服务器上将nginx安装到/usr/local/nginx,并且已经为nginx创建了系统命令
  • /usr/local/nginx目录主要内容如下
    - conf
        - nginx.conf
    - sbin
    	- nginx
    
  • nginx已经编译了ssl相关依赖

2. 解决方案

  • Ⅰ. 将证书文件上传至服务器
    • /usr/local/nginx下创建ssl目录,用于存放证书
      cd /usr/local/nginx
      mkdir ssl
      
    • 将证书相关文件全部上传至ssl目录下
      cd ssl
      rz 
      
    • 最后结果如下,证书文件既可以是.crt也可以是.pem,两者都有效
      nginx
          - ssl
             - xxx.com_bundle.pem
             - xxx.com.key
             - test-xxx.com_bundle.pem
             - test-xxx.com.key
      
  • Ⅱ. 修改/usr/local/nginx/conf/nginx.conf,内容如下
    • 正式环境的配置文件
      # Nginx的主配置文件
      
      user nginx;  # 运行Nginx的用户名,可能需要根据你的系统进行调整
      worker_processes auto;  # 工作进程的数量,auto会根据CPU核心数自动设置
      
      error_log /var/log/nginx/error.log;  # 错误日志的位置
      pid /run/nginx.pid;  # Nginx主进程的PID文件位置
      
      # 全局块中可以包含的事件处理指令
      events {
          worker_connections 1024;  # 每个工作进程可以打开的最大连接数
      }
      
      # http块,包含了所有HTTP相关的配置
      http {
          include       mime.types;  # 包含媒体类型映射文件
          default_type  application/octet-stream;  # 默认媒体类型
      
          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;  # 启用sendfile系统调用来传输文件
          #tcp_nopush     on;
      
          keepalive_timeout  65;  # 长连接超时时间
      
          # gzip配置
          #gzip  on;
      	
      	# 引入其他配置文件
      	include /etc/nginx/conf/*.conf;
      
          # 虚拟主机配置,可以包含多个server块
          server {
      	    listen 80;  # 监听HTTP的80端口
      	    server_name xxx.com www.xxx.com;  # 你的域名
      	
      	    # 将所有HTTP请求重定向到HTTPS
      	    return 301 https://$server_name$request_uri;
      	}
      	
      	# 正式环境
          server {
              listen 443 ssl;  # 监听443端口
              server_name  xxx.com www.xxx.com;  # 服务器名,可以是域名或IP地址
      
      	    # SSL证书和密钥配置
      	    ssl_certificate /usr/local/nginx/ssl/xxx.com_bundle.pem;
      	    ssl_certificate_key /path/to/your/xxx.com.key;
      		
      		# SSL调优
              ssl_session_cache    shared:SSL:1m;
              ssl_session_timeout  5m;
      
              ssl_ciphers  HIGH:!aNULL:!MD5;
              ssl_prefer_server_ciphers  on;
      
              location / {
                  root   /usr/ui/html;  # 自己正式网站根目录
                  index  index.html index.htm;  # 默认页面
              }
      
              # 错误页面配置
              #error_page  404              /404.html;
      
              # redirect server error pages to the static page /50x.html
              
              error_page   500 502 503 504  /50x.html;
              location = /50x.html {
                  root   /usr/share/nginx/html;
              }
      
              # 禁止访问.htaccess文件
              location ~ /\.ht {
                  deny  all;
              }
          }
      }
      
  • Ⅲ. 在/usr/local/nginx/conf/目录下创建nginx.test.conf
    • 创建nginx.test.conf
      touch nginx.test.conf
      
    • 然后加入以下内容
      # 测试环境
      server {
         listen 80;  # 监听HTTP的80端口
          server_name xxx.com www.xxx.com;  # 你的域名
      
          # 将所有HTTP请求重定向到HTTPS
          return 301 https://$server_name$request_uri;
      }
      	
      server {
          listen 443 ssl;  # 监听443端口
          server_name  test-xxx.com www.test-xxx.com;  # 服务器名,可以是域名或IP地址
      
          # SSL证书和密钥配置
          ssl_certificate /usr/local/nginx/ssl/test-xxx.com_bundle.pem;
          ssl_certificate_key /path/to/your/test-xxx.com.key;
      		
          # SSL调优
          ssl_session_cache    shared:SSL:1m;
          ssl_session_timeout  5m;
      
          ssl_ciphers  HIGH:!aNULL:!MD5;
          ssl_prefer_server_ciphers  on;
      
          location / {
                root   /usr/test-ui/html;  # 测试环境网站根目录
                index  index.html index.htm;  # 默认页面
            }
      
          # 错误页面配置
          #error_page  404              /404.html;
      
          # redirect server error pages to the static page /50x.html
              
          error_page   500 502 503 504  /50x.html;
          location = /50x.html {
              root   /usr/share/nginx/html;
          }
      
          # 禁止访问.htaccess文件
          location ~ /\.ht {
              deny  all;
          } 
       }
      
  • Ⅳ. 至此配置完成,接下来启动即可
    • 停止
      nginx -s stop
      
    • 启动
      nginx
      

标签:ssl,nginx,xxx,html,server,Nginx,域名,证书,com
From: https://blog.csdn.net/qq_52011411/article/details/141716841

相关文章

  • 互联网编程:实验三 域名IP转换及应用URL类定位和获取数据编程
    1.编程解析域名:编写一个可重用的域名解析程序模块,使之能够将用户输入的域名解析为IP地址,能将用户输入的IP地址,反向解析为对应的主机名或域名。思路:通过命令行参数args[0]获取用户输入的域名或IP地址。使用InetAddress.getByName(args[0])用于获取相应的InetAddress 对象。......
  • linux nginx 配置连接时间
    在Nginx中配置连接时间主要涉及到几个不同的参数,通常是指与客户端连接、请求和响应相关的时间设置。以下是一些关键配置项,适用于Nginx的nginx.conf文件或相应的虚拟主机配置文件。1.keepalive_timeout设置保持连接的时间。这个时间是指在客户端和服务器之间保持连接的超时时......
  • nginx日志分析工具goaccess
    nginx日志分析工具goaccess wgethttp://tar.goaccess.io/goaccess-1.2.tar.gztarxfgoaccess-1.2.tar.gzcdgoaccess-1.2/./configure--enable-utf8--enable-geoip=legacymakemakeinstall报错:  ......
  • nginx的location详解
    nginx的location详解属于nginx核心模块中的功能,nginx核心功能.location用于匹配用户请求中的uri的.root/app/code/www/www.oldboylinux.cn         uri:/        /app/code/www/首页文件.www.oldboylinux.cn/index.html   ......
  • 【网络基础知识】判断证书私钥格式
    原创小何运维笔记要判断证书私钥的格式,可以采取以下步骤:查看文件扩展名:文件扩展名可以提供一些线索:.pem:PEM格式,通常是Base64编码的,可以包含多种类型的密钥或证书。.key:通常是私钥文件,可能是PEM或其他格式。.der:DER格式,通常是二进制编码,不易用文本编辑器直接查看。.pfx......
  • nginx代理http2服务
    NGINX不支持HTTP/2到后端,这从官方文档中可以看出,支持后端的最高HTTP版本为v1.1。其实添加此类支持实际上没有什么意义,因为HTTP/2的主要功能是请求多路复用。可当NGINX处理HTTP代理时,前端NGINX会将请求路由到后端的匹配位置(因为NGINX总是检查单个请求并将其路由到某个......
  • nginx出现403错误的解决方法
    nginx出现403错误的解决方法 2024/08/3117:06:52[error]26005#26005:*11"/root//frontend/dist/index.html"isforbidden(13:Permissiondenied),client:220.196.160.53,server:81.70.112.191,request:"GET/HTTP/1.1",host:"81.70.112.1......
  • 【学习笔记】SSL证书里包含的具体信息
    SSL证书的形式与内容由X.509证书标准所定义,包含3部分内容:证书数据、签名算法以及签名        当CA创建一份证书时,CA会将所有证书数据录入证书,然后通过哈希算法和CA自己的私钥加密过的摘要来生成一个签名,这个签名证明了证书数据里所有内容的有效性。        ......
  • nginx服务器如何配置跨站请求
    在做app、小程序开发,会存在跨站资源调用的情况,这时就需要对服务器进行配置,让它允许跨站请求,现在以nginx服务器为例进行讲解。nginx服务器如何配置跨站请求,配置代码如下:server{#listen80;listen443;server_name你的域名;i......
  • 怎么入门网络安全,学这两类证书就够了NISP或CISP_cisp和nisp2级题库一样吗
    其实网络安全这个门槛,对于当代的年轻人来说,不高也不低。其中NISP证书分为一级、二级、三级(专项),证书由中国信息安全测评中心颁发,持NISP二级证书可与免考兑换CISP证书。因为CISP报考需要工作经验,NISP填补了在校大学生无法考取CISP证书的空白,被称为“校园版CISP”。看到上一......