1. 程式人生 > >180602-nginx多域名配置

180602-nginx多域名配置

圖片 container 訂閱 AI toc edi css aes pan

文章鏈接:https://liuyueyi.github.io/hexblog/2018/06/02/180602-nginx多域名配置/

nginx多域名配置

原來的域名過期了,重新買了一個hhui.top,正好重新的配置一下,針對之前寫過的幾個不同的東西,通過不同的子域名來進行區分,因此簡單記錄一下nginx的多域名配置

I. 域名配置

1. 背景

因為資金有限,只有一臺服務器,但是這個服務器上幹的事情卻不止一件,當前的狀況是有下面幾個

  • zweb : 一個多媒體工具網站,前端ReactJS寫的,獨立打包;後端為java部署在Tomcat中的應用media
  • mweb : 古詩詞wap網,每天推薦12首經典古詩詞;前端ReactJS編寫,獨立打包;後端Java部署在Tomcat中的應用Story
  • media:多媒體處理應用,Git開源,實現圖片編輯, 二維碼, markdown,svg渲染,html渲染,音頻編輯等功能
  • Story: 古詩詞的後端,提供古詩詞查詢,檢索推薦和訂閱等基本功能,未開源
  • 一灰灰Blog 基於Hexblog搭建的個人博客

所以這臺服務器上,從應用角度出發,有五個不同的功能的服務,主要區分為兩類:

  1. 靜態的html前端頁面
  2. 部署在Tomcat上的Java應用

2. 域名配置

五個服務,會配置五個不同的子域名:

  • 將前端靜態頁面,在服務器上放在不同的目錄下,不通的域名,映射到不同的目錄
  • Tomcat暴露8080端口,不同的應用放在webapps下不同的目錄

a. 域名與文件映射

拿簡單的 zweb 和 mweb 來設置,直接映射即可

server {
    listen       443 ssl;
    server_name  zweb.hhui.top;

    # https 證書配置
    ssl_certificate      zwebcert/1529370953598.pem;
    ssl_certificate_key  zwebcert/1529370953598.key;

    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 TLSv1.1 TLSv1.2;
   # ssl_ciphers  HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers  on;

    root /tmp/html/zweb;
}

server {
    listen       443 ssl;
    server_name  mweb.hhui.top;

    # https 證書配置
    ssl_certificate      zwebcert/1529370953598.pem;
    ssl_certificate_key  zwebcert/1529370953598.key;

    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 TLSv1.1 TLSv1.2;
   # ssl_ciphers  HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers  on;

    root /tmp/html/mweb;
}

簡單來講,一個子域名對應一個配置項,設置其中的server_name為目標域名

然後就是設置root,映射到不同的前端地址即可

b. 博客配置映射

個人博客雖然也是靜態頁面,但是不太一樣的是博客的源碼托管在git上,並借助了github的page服務,因此實際訪問的域名會多一個後綴,如

https://liuyueyi.github.io/hexblog/

所以如果直接用上面的方法,會導致js和css文件404,主要是因為借助hexo搭建博客時,指定了path路徑,所以要做一個簡單的域名匹配

server {
    listen       443 ssl;
    server_name  blog.hhui.top;

    ssl_certificate      blogcert/1529816324478.pem;
    ssl_certificate_key  blogcert/1529816324478.key;

    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 TLSv1.1 TLSv1.2;
   # ssl_ciphers  HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers  on;

    root /tmp/html/blog;

    location = / {
       index index.html;
       rewrite ^(.*)$ /hexblog/ break;
    }
    location / {
       root /tmp/html/blog;
    }
}

上面的配置,相比較前面的,主要就是攔截了下默認的首頁,強制跳轉到指定的目錄下

c. Tomcat代理

server {
    listen       443 ssl;
    server_name  media.hhui.top;

    ssl_certificate      mediacert/1528000080078.pem;
    ssl_certificate_key  mediacert/1528000080078.key;

    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 TLSv1.1 TLSv1.2;
   # ssl_ciphers  HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers  on;

    root /tmp/html/media/;
    location / {
        proxy_pass http://media.hhui.top:8080/media/;
        proxy_redirect default;
    }
}

常見的代理轉發配置了,nginx作為代理,將請求轉發到Tomcat,也就那麽一個簡單的配置,主要利用的是 proxy_redirect

II. 小結

主要記錄一個簡單的配置,關於nginx詳細的配置相關,之前寫過一個博文,加上友情鏈接

  • Nginx-路由轉發配置筆記/

上面配置體驗:

  • https://blog.hhui.top/
  • https://zweb.hhui.top/
  • https://mweb.hhui.top/

III. 其他

一灰灰Blog: https://liuyueyi.github.io/hexblog

一灰灰的個人博客,記錄所有學習和工作中的博文,歡迎大家前去逛逛

聲明

盡信書則不如,已上內容,純屬一家之言,因個人能力有限,難免有疏漏和錯誤之處,如發現bug或者有更好的建議,歡迎批評指正,不吝感激

  • 微博地址: 小灰灰Blog
  • QQ: 一灰灰/3302797840

掃描關註

技術分享圖片

180602-nginx多域名配置