很久沒更了,感謝你們一直的守候。在沒更的日子裏,鏟屎官確實有不少事情要忙,還有不少事兒得作。可是讓我感動的就是,大家還依然堅持在這裏等着我,那麼做爲鏟屎官,我接下來出的東西,絕對讓你對得起這份等待要讓大家大飽眼福。html
廢話很少說了,你將會從這篇文章中學到:前端
在服務器上部署Nginx。node
域名的購買。python
添加域名,讓域名解析到你的服務器上。nginx
教你如何添加SSL證書。web
在你的服務器上面配置Nginx,實現http和https的訪問。數據庫
如何在公安部備案網站的操做。小程序
知識點不少,絕對乾貨滿滿。來吧,一塊兒來摟起來。後端
Nginx 是俄羅斯人編寫的十分輕量級的 HTTP 服務器,是一個高性能的 HTTP 和反向代理服務器。通常用於實現負載均衡和反向代理。微信小程序
網站的訪問量愈來愈大,服務器的服務模式也得進行相應的升級,好比分離出數據庫服務器、分離出圖片做爲單獨服務,這些是簡單的數據的負載均衡,將壓力分散到不一樣的機器上。有時候來自web前端的壓力,也能讓人十分頭痛。怎樣將同一個域名的訪問分散到兩臺或更多的機器上呢?這其實就是另外一種負載均衡了,nginx自身就能夠作到,只須要作個簡單的配置就行。
Nginx不單能夠做爲強大的web服務器,也能夠做爲一個反向代理服務器,並且nginx還能夠按照調度規則實現動態、靜態頁面的分離,能夠按照輪詢、ip哈希、URL哈希、權重等多種方式對後端服務器作負載均衡,同時還支持後端服務器的健康檢查。
咱們這裏只是說一下Nginx如何部署到你的服務器上以及踩坑指南。
首先登錄你的服務器,輸入
1$ yum install nginx
複製代碼
來安裝 Nginx,安裝完成後,輸入
1$ nginx -v
複製代碼
便可查看 Nginx 是否安裝成功。安裝成功的截圖以下:
這裏的版本號顯示的是:1.12.2
這裏配置隨系統啓動,就是爲了方便,不須要在啓動Linux以後手動起Nginx。配置方法就只須要輸入下面兩個命令就能夠了:
1$ chkconfig --levels 235 nginx on
2$ service nginx start
複製代碼
Nginx的配置文件就在 /etc/nginx/
目錄下,叫 nginx.conf
。這裏我就把現成的配置文件給你們黏貼出來,固然,裏面有些細小的地方仍是須要修改的。我會指出來。
1# For more information on configuration, see:
2# * Official English Documentation: http://nginx.org/en/docs/
3# * Official Russian Documentation: http://nginx.org/ru/docs/
4
5user nginx;
6# worker_processes 通常設置與 cpu 個數相等,也可配置爲auto
7worker_processes auto;
8# 全局錯誤日誌及 pid 目錄
9error_log /var/log/nginx/error.log;
10pid /run/nginx.pid;
11
12# Load dynamic modules. See /usr/share/nginx/README.dynamic.
13include /usr/share/nginx/modules/*.conf;
14
15events {
16 # 單個後臺 worker proces s進程的最大併發連接數
17 worker_connections 1024;
18}
19
20http {
21 # 設置 log 格式
22 log_format main '$remote_addr - $remote_user [$time_local] "$request" '
23 '$status $body_bytes_sent "$http_referer" '
24 '"$http_user_agent" "$http_x_forwarded_for"';
25
26 # 配置上游服務器,此處爲 Tornado 服務器 IP+Port
27 upstream frontends {
28 server 127.0.0.1:8000;
29 #server 10.10.10.10:8001;
30 }
31
32 # 訪問日誌
33 access_log /var/log/nginx/access.log main;
34
35 # sendfile 指令指定 nginx 是否調用 sendfile 函數(zero copy 方式)來輸出文件,普通應用,設置爲 on 便可;
36 # keepalive_timeout 配置超時時間;
37 # types_hash_max_size 影響散列表的衝突率。types_hash_max_size 越大,就會消耗更多的內存,但散列key的衝突率會下降,檢索速度就更快。types_hash_max_size 越小,消耗的內存就越小,但散列key的衝突率可能上升。
38 # client_max_body_size 客戶端上傳的body的最大值。
39 sendfile on;
40 tcp_nopush on;
41 tcp_nodelay on;
42 keepalive_timeout 65;
43 types_hash_max_size 2048;
44 client_max_body_size 50m;
45
46 include /etc/nginx/mime.types;
47 default_type application/octet-stream;
48
49 # Load modular configuration files from the /etc/nginx/conf.d directory.
50 # See http://nginx.org/en/docs/ngx_core_module.html#include
51 # for more information.
52 include /etc/nginx/conf.d/*.conf;
53
54 server {
55 # 監聽端口爲 80
56 listen 80 default_server;
57 listen [::]:80 default_server;
58 server_name _;
59 # 默認網站根目錄位置
60 root /usr/share/nginx/html;
61
62 # Load configuration files for the default server block.
63 include /etc/nginx/default.d/*.conf;
64
65 # 設置默認請求代理,此處使用frontends,即請求代理至 Tronado 服務器
66 location / {
67 proxy_pass_header Server;
68 proxy_set_header Host $http_host;
69 proxy_redirect false;
70 proxy_set_header X-Real-IP $remote_addr;
71 proxy_set_header X-Scheme $scheme;
72 proxy_pass http://frontends;
73 }
74
75 # 定義 404 錯誤頁
76 error_page 404 /404.html;
77 location = /40x.html {
78 }
79 # 定義 50x 錯誤頁
80 error_page 500 502 503 504 /50x.html;
81 location = /50x.html {
82 }
83 }
84
85 server {
86 listen 443 ssl http2 default_server;
87 listen [::]:443 ssl http2 default_server;
88 server_name _;
89 root /usr/share/nginx/html;
90
91 ssl_certificate "/root/peekpa.tech.crt";
92 ssl_certificate_key "/root/peekpa.tech.key";
93 ssl_session_cache shared:SSL:1m;
94 ssl_session_timeout 10m;
95 ssl_ciphers HIGH:!aNULL:!MD5;
96 ssl_prefer_server_ciphers on;
97
98 # Load configuration files for the default server block.
99 include /etc/nginx/default.d/*.conf;
100 location / {
101 proxy_pass_header Server;
102 proxy_set_header Host $http_host;
103 proxy_redirect false;
104 proxy_set_header X-Real-IP $remote_addr;
105 proxy_set_header X-Scheme $scheme;
106 proxy_pass http://frontends;
107 }
108
109 error_page 404 /404.html;
110 location = /40x.html {
111 }
112
113 error_page 500 502 503 504 /50x.html;
114 location = /50x.html {
115 }
116 }
117
118}
複製代碼
你們若是想用,就直接把上面的這段複製黏貼就好。
這個配置文件集成http和https兩個於一身的。裏面有幾個須要注意的地方。
1# 配置上游服務器,此處爲 Tornado 服務器 IP+Port
2 upstream frontends {
3 server 127.0.0.1:8000;
4 #server 10.10.10.10:8001;
5 }
複製代碼
當 Nginx 和後端服務器不在同一臺機器上,並有多臺後端服務器設備時,則配置具體服務器的 IP:端口
便可,Nginx 會負載均衡的將流量均勻分配到這些服務器上。此時配置以下:
1upstream frontends {
2 server x.x.x.x:nnn;
3 server y.y.y.y:mmm;
4 server z.z.z.z:lll;
5}
複製代碼
Nginx默認對上傳文件的緩存是1M,這裏咱們修改爲了50M。
1client_max_body_size 50m;
複製代碼
在 nignx.conf 文件中的 location 下,添加以下代理配置,即全部收到的請求,都轉發到 frontends (如上所述的 upstream frontends)處理,具體以下:
1 proxy_pass_header Server;
2 proxy_set_header Host $http_host;
3 proxy_redirect false;
4 proxy_set_header X-Real-IP $remote_addr;
5 proxy_set_header X-Scheme $scheme;
6 proxy_pass http://frontends;
複製代碼
http用的端口是80, https用的算口是443。
https須要SSL證書,而且須要在server裏面設置key的位置:
1 ssl_certificate "/root/peekpa.tech.crt";
2 ssl_certificate_key "/root/peekpa.tech.key";
複製代碼
key的得到方式,隨後在SSL證書部分會講。
這樣就配置完成,http和https都配置好了。咱們就能夠啓動Nginx服務了。
輸入一下命令就能夠重啓服務。
1$ service nginx stop
2$ service nginx start
複製代碼
效果圖以下:
咱們經過http訪問:
https訪問:(若是沒有設置SSL證書,此時應該是訪問不了的,會報錯,這裏能訪問是由於我已經配置好了SSL證書)
因爲咱們是經過https來訪問IP的,因此Chrome會提示咱們不安全。其實我這個服務器是安全的,只不過這個是谷歌本身簡單的檢測而已,對任何IP直接訪問而提醒用戶。
這裏咱們的服務器只有IP,那麼咱們接下來講一下域名的事兒。
個人域名是在阿里雲萬網上
面買的。
買域名的網站有不少,好比阿里雲,騰訊雲也能夠買,你也能夠去著名的GoDaddy上面買,並且那裏也支持支付寶支付。很方便。
我的感受,阿里雲萬網要比騰訊雲域名好一些,關鍵是搜索的域名多。價格其實三家都差很少,有些新用戶在這裏買域名有優惠券。我這裏就給你們分享一些阿里雲的 1000元 優惠券:
https://promotion.aliyun.com/ntms/yunparter/invite.html?userCode=nrkmbo9q大家速度去領取就好。
下面給你們簡單說一下域名的購買和使用。這裏就以阿里云爲例。
首先輸入你要買的域名名稱:
點擊查詢,就會出來結果:
選擇你中意的一個,添加到購物車裏就好。這裏須要注意的就是域名的後綴:有一些域名的後綴是要額外提供材料的,選擇前請留意一下。
在結算頁面,須要填寫域名持有者或者機構的信息,這裏須要認真填寫真是信息。萬一你買的域名,哪天就會被別的公司看上,以重金買走。若是填寫的假的信息,別人是找不到你的。
付完款,買了域名,你就來到了阿里雲的域名管理界面。
若是咱們想要把域名解析到咱們的服務器上,須要點擊那個解析按鈕,而後就進入瞭解析設置,裏面選擇添加記錄。這裏我就以peekpa.tech
爲例。
咱們若是要配置www.peekpa.tech
的解析,須要填寫成下面這個樣子:
這個是通用的,記錄值寫咱們的服務器IP地址就好。
還有一種,就是在瀏覽器地址裏面輸入peekpa.tech就直接解析,在主機記錄裏面輸入@
,沒有前面的www。這種解析的寫法以下:
而後點擊肯定。將兩條解析規則添加進去。
好了,稍等片刻,而後咱們在瀏覽器測試一下剛纔的結果:
輸入www.peekpa.tech
輸入peekpa.tech
咱們看到,網頁訪問頁面變成了阿里雲的備案提示頁面,這個應該是阿里雲把80端口的網絡請求攔截了,因爲沒有備案,因此顯示的提示備案畫面。如果要消除這個頁面,惟一的途徑就是公安局備案。可是!若是你是剛剛解析了地址,那麼你的地址是能夠正常訪問的。應該是過一段時間,就不行了。
域名解析了,咱們如今只是http的訪問。如實要給咱們的服務器添加https訪問域名,咱們這個時候就須要添加SSL證書了。
爲何要把http變成https呢?是由於https的訪問更加安全,緣由就在於每次訪問,數據都是加密的。既然是加密,這裏就須要一個叫SSL證書的東西了。
個人SSL證書實在騰訊雲上面下載的。這裏本身搞,用一個免費的就好。固然,這個加密證書是有付費的,並且等級越高,價格越貴。
一年證書3W4。
固然,也有免費的證書能夠下載申請。
阿里雲的申請地址:在左側選擇雲解析DNS
,而後你的域名列表右側有一個SSL證書,點進去就能夠看到免費域名申請。
我這裏選擇騰訊雲的SSL證書講解。
這裏選擇域名型免費版(DV)
,而後點擊申請。
而後按照提示一步一步的完成購買便可。過程當中有一個TXT值,最好記錄一下,每一步都有提示,提示你每一個值是幹什麼的。這個TXT值,會在域名解析的頁面填寫中用到。爲了方便,咱們這時候回到域名解析的頁面,上文中提到的位置,選擇添加記錄,按照騰訊雲的提示,來填寫:
填寫好以後,點擊添加。這樣就結束了。再回到騰訊雲的SSL界面。
這裏,最後會下載下來一個zip包。解壓縮,裏面就會有不一樣服務器對應的key值。
進入到Nginx目錄:
這裏面,就看到有兩個文件,一個是.crt文件,另外一個是.key文件。有沒有眼熟???眼熟嗎???
沒錯!這兩個文件就曾經出如今Nginx配置裏面,位置是:
1server {
2 listen 443 ssl http2 default_server;
3 listen [::]:443 ssl http2 default_server;
4 server_name _;
5 root /usr/share/nginx/html;
6
7 ssl_certificate "/root/peekpa.tech.crt";
8 ssl_certificate_key "/root/peekpa.tech.key";
9 ssl_session_cache shared:SSL:1m;
10 ssl_session_timeout 10m;
11 ssl_ciphers HIGH:!aNULL:!MD5;
12 ssl_prefer_server_ciphers on;
複製代碼
你如今要作的就是把這兩個文件,複製到你服務器對應的目錄裏面,而後再在/etc/nginx/nginx.conf文件裏面找到位置將地址寫好。
記得!每一次修改完nginx.conf文件,必定要把Nginx服務重啓一下。即stop,而後start。
這樣,咱們服務器裏面有了SSL證書,域名也添加了SSL解析,咱們來實驗一下:
咱們看到帶不帶www都是能夠訪問的。並且在瀏覽器地址前面,添加了安全
倆字。這樣,就支持了https訪問。哈哈哈哈~
這裏確定有人就會問,爲啥這麼折騰,費時費事要弄個https啊?
首先,這個https是將來的趨勢,就和python3是趨勢同樣;其次,好多地方都是須要https的,就好比微信小程序,若是你小程序裏有請求接口,就必須得用https的請求,並且,只支持域名訪問,域名還必須得是公安局備案的域名。
那麼接下來就來捯飭捯飭域名備案的事兒。
騰訊雲也有備案系統。因爲服務器是在阿里雲買的,並且你們也看到了那個經過80端口訪問的頁面,因此這裏仍是選擇
https://beian.aliyun.com/
進入頁面,按照指示一個一個來辦理就好了。這裏須要注意一點:各個省份的公安備案標準不同,請在網站上仔細閱讀。若是是我的備案,應當按照身份證上的地址所在公安備案。前期阿里審理工做比較快,大概只須要一兩天的時間,中途須要照相,還須要特定的幕布,這個可讓阿里免費寄一個幕布,以後照相,提交材料就能夠。阿里審覈完成以後,進入公安局的流程,會很長。截至目前爲止,個人備案尚未下來。可能第一次備案時間須要的長一些吧。
呃。。。。這一大通都說完了。。。巴拉巴拉說了一堆,但願對大家有所幫助。最後我的感受,就我目前的需求強度來說,阿里雲要比騰訊雲好一些,阿里雲種類全。而AWS就不吐槽了,非國內節點太慢了。反正各有利弊,你們依照本身需求來選擇就行。
鏟屎官下一次來簡單說說微信小程序和本身服務器結合的事兒。。。