Nginx实现三级域名访问

我的VPS上部署了MPOOM工作台个人博客文件共享平台三个系统,并且在阿里云平台购买了域名,想要通过nginx实现不同的三级域名访问不同的系统,例如:

ps:如果域名要解析到国内云服务器,域名要提前在工信部进行备案,但是如果解析到国外,则没有这个限制.

配置文件mpoom.conf如下:

# mpoom工作台
server {
    listen       80;
    server_name  mpoom.cn www.mpoom.cn;
    location / {
        proxy_pass  http://127.0.0.1:8090;
    }
}
# 个人博客
server {
    listen       80;
    server_name  blog.mpoom.cn;

    set $root_path "/usr/local/webserver/blog/public";

    #charset koi8-r;
    access_log  /home/running/blog/blog-logs/host.access.log;
    error_log  /home/running/blog/blog-logs/error.log;
    # 个人博客系统是由hexo生成的静态页面
    location / {
        root   $root_path;
        index  index.html index.htm;
    }
}
# 文件共享平台
server {
    listen       80;
    server_name  m.mpoom.cn;

    set $root_path "/home/running/web/open-web/";

    #charset koi8-r;
    access_log  /home/running/web/openweb-logs/host.access.log;
    error_log  /home/running/blog/blog-logs/error.log;

    location / {
        root   $root_path;
        index  index.html index.htm;
    }

    location ~ ^/service/ {
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Cookie $http_cookie;
        proxy_cookie_path /service/ /;

        proxy_buffering off;
        proxy_connect_timeout 300s;
        proxy_send_timeout 300s;
        proxy_read_timeout 300s;
        proxy_pass  http://127.0.0.1:9000;
    }
}

工作台和文件共享平台进行了前后端分离,且两者共用后台系统,前端使用nginx作为服务器,后台使用nginx作为反向代理服务器。

然后在nginx主配置文件nginx.conf的http模块引入上面mpoom.conf配置文件

include /etc/nginx/conf.d/mpoom.conf;

Nginx实现https访问

为保障MPOOM工作台访问安全性,且在阿里云购可以购买免费的SSL证书,所以决定使用https来进行访问。

Nginx服务器安装SSL证书步骤如下

  • 在阿里云购买免费的SSL证书,验证通过后,下载Nginx版本证书。

  • 进入nginx安装目录下的conf目录,在conf目录下创建cert目录,将下载解压后的证书上传到cert目录,下载到本地的证书压缩文件包解压后包含:

    • .crt文件:是证书文件,crt是pem文件的扩展名。
    • .key文件:证书的私钥文件。
  • 在nginx配置文件的http模块下新增一个server模块,配置如下:

    server {
        listen 443;
        server_name mpoom.cn;
        ssl on;
        ssl_certificate  cert/***_www.mpoom.cn.pem;
        ssl_certificate_key cert/***_www.mpoom.cn.key;
        ssl_session_timeout 5m;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;
    
        location / {
            proxy_pass  http://127.0.0.1:8090;
        }
    }
  • 强制http跳转至https,将工作台的server模块更新为如下:

    server {
        listen       80;
        server_name  mpoom.cn www.mpoom.cn;
        return 301 https://www.mpoom.cn$request_uri;
    }
  • 重启nginx。