nginx如何使用多个域名在一个服务器上指向多个服务

        最近整了一个域名,想着就先把域名给放在自己的测试服务器上玩玩,但是自己又有多个服务,就打算搞几个二级域名来用,现在出一篇文章,把我的经验分享给大家吧,大致的内容是;如何生成二级域名,如何生成ssl测试证书,如何设置nginx,如何将证书绑定域名,nginx如何重定向等等。本次以华为云服务器为例。(保姆级!!!)

        做这些事情的前提条件是,你所购买的域名必须的提交审核,而且必须得是管局审核通过后才能进行后续的操作!!

 1,使用一级域名解析我们的公网ip

                当我们的域名通过管局审核后,我们需要将我们的一级域名解析我们的公网ip。

                在华为云顶部搜索框里搜索“域名”,在出现的内容里选中我们的“云解析服务dns”,下图所示

        在出现的页面里,在底部找到我们的域名,域名右侧点击 “解析”,进入到下一个页面,如下图所示

        进入到页面后,点击“快速添加解析”,会弹出一个对话框,我们在对话框里里的 “值”输入框输入我们服务器的公网ip即可,如下图所示

        当把这些事情做完后,我们就可以在访问我们域名,从而自动的解析访问我们的ip啦,这里如果没有在nginx上设置的话,默认是访问公网ip80端口的内容。

2,申请二级域名

        我们还是在我们添加解析的页面上添加二级域名,在页面的左侧,点击添加“添加记录集”,

在弹出的弹窗里输入我们的二级域名的内容,如下图所示,只填红框内容即可,其他的不用管。

        点击确定,我们就设置上好了二级域名了、

3.申请ssl测试证书

        首先,我们要明白为什么我们的网站要这个ssl证书,如果网站没有这个证书,我们的网站就不能使用https协议来访问,就会被浏览器标记成不安全的网站,如果是微信浏览器访问的话,还有可能被微信封禁的风险,所以,为了长久考虑,得添加上ssl安全证书。

        在华为云里提供了免费的安全证书,我们在华为云官网的最外层搜索ssl,选择“云证书管理服务”,如下图所示

         跳转到新页面后,点击“测试证书”,如下图所示。

                在页面点击“创建测试证书”,选中我们需要的证书即可,如下图所示

         点击确定后会在证书列表页多出一条空白证书。我们点击空白证书右侧的"申请证书"。如下图所示。

        

        在弹出的对话框里输入我们的信息。这里要注意下,对话框里的“绑定域名”的输入框填写规则是这样的,假设我一级域名是 admin.com,那我我要给这个一级域名申请证书,我在绑定域名里要输入的就是,www.admin.com,如果我还有一个二级域名是,test.admin.com,那么我在里面输入的就是,test.admin.com,不要在二级域名前面加www。信息输入完成后点击提交申请。如下图所示

        

        提交完成后,在证书列表里会多出一条待验证的ssl证书,我们点击"域名验证"

                 在弹出的对话框架记录会出现一些文本内容,我们要做的就是复制文本内容,然后再次回到我们添加解析的页面。将文本内容填写到解析里面,如下图所示

                文本内容:

                回到域名解析的页面,点击 “添加记录级”,在弹出的内容里依次输入我们在ssl验证页面的内容,如下图所示。点击保存即可,注意,如果是给一级域名申请ssl的话就不需要在解析里面在次验证了。

         再次回到ssl验证页面,点击"域名验证",在弹出的对话框里点击"验证"即可,如果解析的内容填写无误的话会提示验证成功,系统会自动签发证书。然后我们点击下载,将证书下载下来即可。

        

        下载完是一个zip包,我们进入到zip包找到nginx的那个文件夹,进入。如下图,

         拿到文件夹中的2个文件,将他放到服务器上的某个文件夹里,我这里通过xftp来进行文件的放入

        服务器:

        

         准备工作已经做好,剩下的就是nginx上设置了

4.nginx绑定ssl,服务代理。

        当做到这一步后就是在nginx上设置,这里我会将我的设置贴出来,并打上注释,多的我也就不多说了。

        


user  root;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;

events {
    worker_connections  1024;
}

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  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

#server {  当希望某个域名返回404时可以直接return一个404 这个当访问这个地址时会返回404
 #   listen 80;
  #  server_name www.xxx.top;
   # return 404;
#}
server {
    server_name shuaige.xxx.top; #同下,注意,这里的域名前面不用加www。 这个是二级域名的重定向到https
    return 301 https://shuaige.xxx.top$request_uri;
}
server {  #做域名转发,当访问的是xxx.top时,自动重定向的加上https ,这个是一级域名的重定向到https
    server_name xxx.top;  #要监控的域名
    return 301 https://www.xxx.top$request_uri;
}

server { #配置监听前端服务
    listen 82; #端口不可重复
    server_name 127.0.0.1; #监听本机

    root /project/chanping/dist; #指向的内容,也就是我们vue打出的dist包所在的位置
    index index.html index.htm;

    location / {
        try_files $uri $uri/ @router;
    }

    location @router {
        rewrite ^.*$ /index.html last;
    }

    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
        root html;
    }
}
server {
    listen 83; #同上
    server_name 127.0.0.1;

    root /project/admin/dist;
    index index.html index.htm;

    location / {
        try_files $uri $uri/ @router;
    }

    location @router {
        rewrite ^.*$ /index.html last;
    }

    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
        root html;
    }
}



server {
    listen 443 ssl; #设置ssl证书绑定域名,这里是443端口,不可以修改
    server_name shuaige.xxx.top; #这里是我们要添加上我们要绑定的域名,注意域名和证书必须得同步。,注意二级域名这里在前面不需要加上www.

    ssl_certificate /usr/local/nginx/ssl2/scs1705043006543_shuaige.xxx.top_server.crt; #这里输入的是证书的crt
    ssl_certificate_key /usr/local/nginx/ssl2/scs1705043006543_shuaige.xxx.top_server.key; #这里输入的是key

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

    ssl_ciphers HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers on;

    location / {
        proxy_pass http://127.0.0.1:82; #这里是当访问这个域名后,代理转发到本机的82端口,也就是我们上方设置的内容
    }
}

server {
    listen 443 ssl;  #同上
    server_name www.xxx.top;

    ssl_certificate /usr/local/nginx/ssl/scs1695202495878_www.xxx.top_server.crt;
    ssl_certificate_key /usr/local/nginx/ssl/scs1695202495878_www.xxx.top_server.key;

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

    ssl_ciphers HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers on;

    location / {
        proxy_pass http://127.0.0.1:83; #这里稍微重要一点,当访问这个地址时,这个地址代理这个本地服务的83端口的内容
    }
}
}  




拜拜!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大眼小夫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值