阿⾥云腾讯云服务器上部署Nginx,域名,SSL证书
你将会从这篇⽂章中学到:
在服务器上部署Nginx。
域名的购买。
添加域名,让域名解析到你的服务器上。
教你如何添加SSL证书。
在你的服务器上⾯配置Nginx,实现http和https的访问。
如何在公安部备案⽹站的操作。
Nginx 是俄罗斯⼈编写的⼗分轻量级的 HTTP 服务器,是⼀个⾼性能的 HTTP 和反向代理服务器。⼀般⽤于实现负载均衡和反向代理。
⽹站的访问量越来越⼤,服务器的服务模式也得进⾏相应的升级,⽐如分离出数据库服务器、分离出图⽚作为单独服务,这些是简单的数据的负载均衡,将压⼒分散到不同的机器上。有时候来⾃web前端的
压⼒,也能让⼈⼗分头痛。怎样将同⼀个域名的访问分散到两台或更多的机器上呢?这其实就是另⼀种负载均衡了,nginx⾃⾝就可以做到,只需要做个简单的配置就⾏。
Nginx不单可以作为强⼤的web服务器,也可以作为⼀个反向代理服务器,⽽且nginx还可以按照调度规则实现动态、静态页⾯的分离,可以按照轮询、ip哈希、URL哈希、权重等多种⽅式对后端服务器做负载均衡,同时还⽀持后端服务器的健康检查。
我们这⾥只是说⼀下Nginx如何部署到你的服务器上以及踩坑指南。
安装Nginx
⾸先登陆你的服务器,输⼊
$ yum install nginx
来安装 Nginx,安装完成后,输⼊
$ nginx -v
即可查看 Nginx 是否安装成功。安装成功的截图如下:
这⾥的版本号显⽰的是:1.12.2
配置随系统启动
这⾥配置随系统启动,就是为了⽅便,不需要在启动Linux之后⼿动起Nginx。配置⽅法就只需要输⼊下⾯两个命令就可以了:$ chkconfig --levels 235 nginx on
$ service nginx start
配置Nginx
Nginx的配置⽂件就在 /etc/nginx/⽬录下,叫 f。这⾥我就把现成的配置⽂件给⼤家黏贴出来,当然,⾥⾯有些细⼩的地⽅还是需要修改的。我会指出来。
# For more information on configuration, see:
# * Official English Documentation: /en/docs/
# * Official Russian Documentation: /ru/docs/
user nginx;
# worker_processes ⼀般设置与 cpu 个数相等,也可配置为auto
worker_processes auto;
worker_processes auto;
# 全局错误⽇志及 pid ⽬录
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
# Load dynamic modules. See /usr/share/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;
events {
# 单个后台 worker proces s进程的最⼤并发链接数
worker_connections 1024;
}
http {
# 设置 log 格式
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
# 配置上游服务器,此处为 Tornado 服务器 IP+Port
upstream frontends {
server 127.0.0.1:8000;
#server 10.10.10.10:8001;
}
# 访问⽇志
access_log /var/log/nginx/access.log main;
# sendfile 指令指定 nginx 是否调⽤ sendfile 函数(zero copy ⽅式)来输出⽂件,普通应⽤,设置为 on 即可;
# keepalive_timeout 配置超时时间;
# types_hash_max_size 影响散列表的冲突率。types_hash_max_size 越⼤,就会消耗更多的内存,但散列key的冲突率会降低,检索速度就更快。types_hash_m # client_max_body_size 客户端上传的body的最⼤值。
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
client_max_body_size 50m;
include /etc/pes;
default_type application/octet-stream;
# Load modular configuration files from the /etc/nginx/conf.d directory.
# See /en/docs/ngx_core_module.html#include
# for more information.
include /etc/nginx/conf.d/*.conf;
server {
# 监听端⼝为 80
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
# 默认⽹站根⽬录位置
root /usr/share/nginx/html;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
# 设置默认请求代理,此处使⽤frontends,即请求代理⾄ Tronado 服务器
location / {
proxy_pass_header Server;
proxy_set_header Host $http_host;
proxy_redirect false;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme;
proxy_pass frontends;
}
# 定义 404 错误页
error_page 404 /404.html;
location = /40x.html {
}
# 定义 50x 错误页
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
server {
listen 443 ssl http2 default_server;
listen [::]:443 ssl http2 default_server;
listen [::]:443 ssl http2 default_server;
server_name _;
root /usr/share/nginx/html;
ssl_certificate "/h.crt";
ssl_certificate_key "/h.key";
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 10m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
location / {
proxy_pass_header Server;
proxy_set_header Host $http_host;
proxy_redirect false;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme;
proxy_pass frontends;
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
}
⼤家如果想⽤,就直接把上⾯的这段复制黏贴就好。
这个配置⽂件集成http和https两个于⼀⾝的。⾥⾯有⼏个需要注意的地⽅。
# 配置上游服务器,此处为 Tornado 服务器 IP+Port
upstream frontends {
server127.0.0.1:8000;
#server 10.10.10.10:8001;
}
当 Nginx 和后端服务器不在同⼀台机器上,并有多台后端服务器设备时,则配置具体服务器的 IP:端⼝即可,Nginx 会负载均衡的将流量均匀分配到这些服务器上。此时配置如下:
upstream frontends {
:nnn;
:mmm;
:lll;
}
Nginx默认对上传⽂件的缓存是1M,这⾥我们修改成了50M。
client_max_body_size50m;
在 f ⽂件中的 location 下,添加如下代理配置,即所有收到的请求,都转发到 frontends (如上所述的 upstream frontends)处理,具体如下:
proxy_pass_header Server;
proxy_set_header Host $http_host;
proxy_redirect false;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme;
proxy_pass frontends;
http⽤的端⼝是80, https⽤的算⼝是443。
https需要SSL证书,并且需要在server⾥⾯设置key的位置:
ssl_certificate"/h.crt";
ssl_certificate_key"/h.key";
key的获得⽅式,随后在SSL证书部分会讲。
这样就配置完成,http和https都配置好了。我们就可以启动Nginx服务了。
重启Nginx服务
输⼊⼀下命令就可以重启服务。
$ service nginx stop
$ service nginx start
效果图如下:
我们可以通过http访问
https访问:(如果没有设置SSL证书,此时应该是访问不了的,会报错,这⾥能访问是因为我已经配置好了SSL证书)
由于我们是通过https来访问IP的,所以Chrome会提⽰我们不安全。其实我这个服务器是安全的,只不过这个是⾕歌⾃⼰简单的检测⽽已,对任何IP直接访问⽽提醒⽤户。
这⾥我们的服务器只有IP,那么我们接下来说⼀下域名的事⼉。
我的域名是在阿⾥云万⽹上⾯买的。
阿⾥云万⽹: wanwang.aliyun/腾讯云域名: t/ GoDaddy:
sg.godaddy/
买域名的⽹站有很多,⽐如阿⾥云,腾讯云也可以买,你也可以去著名的GoDaddy上⾯买,⽽且那⾥也⽀持⽀付宝⽀付。很⽅便。
下⾯给⼤家简单说⼀下域名的购买和使⽤。这⾥就以阿⾥云为例。
⾸先输⼊你要买的域名名称:
点击查询,就会出来结果:
选择你中意的⼀个,添加到购物车⾥就好。这⾥需要注意的就是域名的后缀:有⼀些域名的后缀是要额外提供材料的,选择前请留意⼀下。
如何设置代理服务器在结算页⾯,需要填写域名持有者或者机构的信息,这⾥需要认真填写真是信息。万⼀你买的域名,哪天就会被别的公司看上,以重⾦买⾛。如果填写的假的信息,别⼈是不到你的。
这⾥就想起了weibo域名的笑话,哈哈哈哈。
付完款,买了域名,你就来到了阿⾥云的域名管理界⾯。
如果我们想要把域名解析到我们的服务器上,需要点击那个解析按钮,然后就进⼊了解析设置,⾥⾯选择添加记录。这⾥我就
以h为例。
我们如果要配置h的解析,需要填写成下⾯这个样⼦:
这个是通⽤的,记录值写我们的服务器IP地址就好。
还有⼀种,就是在浏览器地址⾥⾯输⼊h就直接解析,在主机记录⾥⾯输⼊@,没有前⾯的www。这种解析的写法如下:
然后点击确定。将两条解析规则添加进去。
好了,稍等⽚刻,然后我们在浏览器测试⼀下刚才的结果:
输⼊h
h
输⼊h
我们看到,⽹页访问页⾯变成了阿⾥云的备案提⽰页⾯,这个应该是阿⾥云把80端⼝的⽹络请求拦截了,由于没有备案,所以显⽰的提⽰备案画⾯。若是要消除这个页⾯,唯⼀的途径就是公安局备案。但是!如果你是刚刚解析了地址,那么你的地址是可以正常访问的。应该是过⼀段时间,就不⾏了。
域名解析了,我们现在只是http的访问。如实要给我们的服务器添加https访问域名,我们这个时候就需要添加SSL证书了。
为什么要把http变成https呢?是因为https的访问更加安全,原因就在于每次访问,数据都是加密的。既然是加密,这⾥就需要⼀个叫SSL 证书的东西了。
我的SSL证书实在腾讯云上⾯下载的。这⾥⾃⼰搞,⽤⼀个免费的就好。当然,这个加密证书是有付费的,⽽且等级越⾼,价格越贵。
⼀年证书3W4。
当然,也有免费的证书可以下载申请。
阿⾥云的申请地址:在左侧选择云解析DNS,然后你的域名列表右侧有⼀个SSL证书,点进去就可以看到免费域名申请。
腾云云上申请地址:
t/ssl?fromSource=ssl
我这⾥选择腾讯云的SSL证书讲解。
这⾥选择域名型免费版(DV),然后点击申请。
然后按照提⽰⼀步⼀步的完成购买即可。过程中有⼀个TXT值,最好记录⼀下,每⼀步都有提⽰,提⽰你每个值是⼲什么的。这个TXT值,会在域名解析的页⾯填写中⽤到。为了⽅便,我们这时候回到域名解析的页⾯,上⽂中提到的位置,选择添加记录,按照腾讯云的提⽰,来填写:
填写好之后,点击添加。这样就结束了。再回到腾讯云的SSL界⾯。
这⾥,最后会下载下来⼀个zip包。解压缩,⾥⾯就会有不同服务器对应的key值。
进⼊到Nginx⽬录:
这⾥⾯,就看到有两个⽂件,⼀个是.crt⽂件,另⼀个是.key⽂件。有没有眼熟眼熟吗
没错!这两个⽂件就曾经出现在Nginx配置⾥⾯,位置是:
server {
listen443 ssl http2 default_server;
listen [::]:443 ssl http2 default_server;
server_name _;
root /usr/share/nginx/html;
ssl_certificate"/h.crt";
ssl_certificate_key"/h.key";
ssl_session_cache shared:SSL:1m;
ssl_session_timeout10m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
你现在要做的就是把这两个⽂件,复制到你服务器对应的⽬录⾥⾯,然后再在/etc/f⽂件⾥⾯到位置将地址写好。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论