通過http、https域名訪問靜態網頁、nginx配置負載均衡(nginx配置)
阿新 • • 發佈:2020-08-14
很多場景下需要可以通過瀏覽器訪問靜態網頁,不想把伺服器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; }