很多場景下需要可以通過瀏覽器訪問靜態網頁,不想把服務器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;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/79457.html
標籤:其他
