1. 程式人生 > >通過http、https域名訪問靜態網頁、nginx配置負載均衡(nginx配置)

通過http、https域名訪問靜態網頁、nginx配置負載均衡(nginx配置)

很多場景下需要可以通過瀏覽器訪問靜態網頁,不想把伺服器ip地址直接暴露出來,通過nginx可以解決這個問題。

實現http域名訪問靜態網頁

1.域名解析配置(本文都是以阿里云為例,其他平臺,操作步驟類似)

進入阿里雲的域名解析頁面,配置域名指向的伺服器地址(記錄型別選擇A,記錄值填寫伺服器ip,記得把伺服器的80埠開放)

​       ​ 

修改nginx配置檔案,重啟nginx,這樣通過http域名就可以訪問網頁資源了

server {
        listen 80; # 訪問不帶埠號時,預設是80埠
        server_name www.dishuizhiyi.top; # 剛剛配置的域名
        location / {
                root   /app/web/demoPage; # 靜態網頁資源放置的資料夾(伺服器上的位置)
                # 預設訪問index頁面
                try_files $uri $uri/  /index.html; 
                index  index.html index.htm;
        }
}

# 檢查檔案格式是否正確
$ /usr/local/nginx/sbin/nginx -t
# 重啟nginx
$ /usr/local/nginx/sbin/nginx -s reload

頁面訪問情況如下

實現https域名訪問靜態網頁

https需要配置證書,保證安全性,首先購買證書(阿里雲提供了免費的證書,本文就以此為例)

1.購買證書(進入SSL證書頁面,購買證書;然後選擇單域名、DV SSL、免費版進行購買)

​     

2.購買完成後控制檯列表會有一條未簽發的記錄,點選證書申請


3.填寫證書申請資訊,然後點選下一步,出現驗證資訊,需要進行驗證(域名解析中配置解析)

​       

4.域名解析頁面配置解析記錄(型別為TXT,記錄值為證書驗證資訊中的記錄值),配置好後,點選驗證,提示驗證成功。

   ​         

5.下載證書(因為使用的是Nginx,所以下載Nginx對應的證書檔案),下載好後上傳到伺服器。

6.配置Nginx的配置檔案(伺服器需要開放443埠<https訪問埠>)

server {
        listen       443 ssl; # 監聽埠
        server_name  www.dishuizhiyi.top;
        # 證書檔案
        ssl_certificate      /usr/local/nginx/cert/top.pem;
        ssl_certificate_key  /usr/local/nginx/cert/top.key;

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

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

        location / {
                root   /app/web/demoPage;
                try_files $uri $uri/  /index.html;
                index  index.html index.htm;
        }
}

7.重啟Nginx。

# 在校驗配置檔案的時候,報了一個錯誤。
# Nginx如果未開啟SSL模組,配置Https時提示錯誤
# 因為Nginx缺少http_ssl_module模組,編譯安裝的時候帶上–with-http_ssl_module配置就行了。
nginx: [emerg] the "ssl" parameter requires ngx_http_ssl_module in /usr/local/nginx/conf/nginx.conf:127
nginx: configuration file /usr/local/nginx/conf/nginx.conf test failed

# 但是現在nginx已經安裝完成了,新增模組的步驟如下
# 檢視當前安裝Nginx的資訊(configure arguments後面的資訊為空,沒有我們想要的模組)
$ /usr/local/nginx/sbin/nginx -v

nginx version: nginx/1.14.1
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC) 
configure arguments:

# 進入原始碼路徑,重新打包
$ cd /usr/nginx/nginx-1.14.1
# 執行下面的命令即可,等配置完
$ ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
# 這裡不要進行make install,否則就是覆蓋安裝
$ make
# 備份舊的檔案(可以選擇不備份)
$ cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak 
# 覆蓋新的檔案到執行路徑(要把Nginx先停掉)
$ cp objs/nginx /usr/local/nginx/sbin/
# 覆蓋完成後啟動Nginx
$ usr/local/nginx/sbin/nginx

8.通過https域名訪問網頁(https配置成功後,訪問域名前邊會有一把小鎖)

Nginx配置負載均衡

# 以https為例(http方式也可以),通過upstream的配置,實現轉發,weight代表節點的權重
server {
        listen 443 ssl;
        server_name api.dishuizhiyi.top;

        ssl on;

        ssl_certificate /cert/top.pem;
        ssl_certificate_key /cert/top.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://api;
        }
    }

    upstream api{
         server 127.0.0.1:3000 weight=1;
         server 127.0.0.1:3001 weight=1;
         server 127.0.0.1:3002 weight=1;
    }