文章详情
ubuntu安装nginx并配置https
标签:
  • ubuntu
  • nginx
  • https
日期:2019-1-09 19:11
摘要:https认证的网站在浏览器地址栏会出现一把绿色的小锁,不会被抓包,且微信小程序只支持https的接口调用...

ubuntu安装nginx直接通过APT安装就挺方便的,不用折腾:

sudo apt-get install nginx

安装后的文件位置:

/usr/sbin/nginx:主程序

/etc/nginx:存放配置文件的目录

/usr/share/nginx:存放静态文件的目录

/var/log/nginx:存放日志的目录

通过这种方式安装的,会自动创建服务,自动在/etc/init.d/nginx新建服务脚本,然后就可以使用sudo service nginx { start | stop | restart | reload | force-reload | status | configtest | rotate | upgrade }的命令。

安装好后就自动启动了,用sudo service nginx status指令看一下运行状况,一般是没问题的。

https在http下加了ssl层,不会被抓包,比http安全,在浏览器的地址栏左边会出现一把绿色的小锁。

配置https需要ssl证书,自签名证书没用,需要先去申请,阿里云和腾讯云都有免费的证书申请,下载后解压会出现几个文件夹:

需要拿到Nginx文件夹内的文件,这是公钥和私钥:

把这些文件放到/etc/nginx/conf.d文件夹内,同时在这个文件夹新建一个ssl.conf文件,写入:

server {
listen 443;
server_name www.xi-g.com; # 改为绑定证书的域名
# ssl 配置
ssl on;
ssl_certificate /etc/nginx/conf.d/1_www.xi-g.com_bundle.crt; # 改为自己申请得到的 crt 文件的路径
ssl_certificate_key /etc/nginx/conf.d/2_www.xi-g.com.key; # 改为自己申请得到的 key 文件的路径
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4:!DH:!DHE;
ssl_prefer_server_ciphers on;

location / {
proxy_pass http://localhost:3000; # 做端口转发
}
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
}

这样就把https配置好了,但访问网站加www和不加www是存在跨域的,还需要做一些重定向,这样不管怎么访问都是https://www打头,在ssl.conf里再追加:

server {
listen 80;
server_name www.xi-g.com;
rewrite ^(.*)$ https://${server_name}$1 permanent;
}
server {
listen 80;
server_name xi-g.com;
rewrite ^(.*)$ https://www.${server_name}$1 permanent;
}
server {
listen 443;
server_name xi-g.com;
rewrite ^(.*)$ https://www.${server_name}$1 permanent;
}

这样不管访问以下哪个域名

http://www.xi-g.com

http://xi-g.com

https://xi-g.com

都会跳转到https://www.xi-g.com

最后重加载一下nginx的配置,大功告成...

sudo service nginx reload


发送
评论(0)