【2020 最新】菜鸟新手从零 Nginx 配置域名、域名解析、SSL 证书、HTTPS【Nginx、SSL、HTTPS、Apache、Tomcat、IIS】

3,716 阅读7分钟

如果你还不会在你的服务器上安装 LNMP 环境及 Laravel 又找不到方法时,我对此流程做了非常详细的教程,点它学习👉【2020 年最新】新手从零配置 服务器的 LNMP 及 Laravel 环境 超纯净无报错 (Linux、Nginx、MySQL、PHP、Laravel)

材料准备:

  • 服务器(我用的是 aliyun Ecs 用哪个平台的都可以)
  • 服务器是 Linux 系统(我用的 Ubuntu 18.04
  • 已经申请域名(不备案的话好像不能用你也可以试试,备案挺简单的直接去你购买的平台他们都有步骤主要是审核时间长 20 天左右)
  • 命令行(Windows、Mac 自带的即可)
  • SSL 证书(没有的话也不担心,下面会教你如何申请一个免费的)
  • FileZilla FTP 工具(没有的话下面会教下载)

老规矩,起锅烧油

看完本章你可以学会:为什么要配置 Https、如何配置网站域名、如何在你购买的云平台配置域名解析、申请 SSL 证书、实现 Https 访问

为什么要配置 https ?

防流量劫持:HTTPS 会建立起一个防劫持的通讯加密隧道,解决中间人流量劫持的问题,不仅可以杜绝网页中显示的小广告,更可以保护用户隐私安全。

提升搜索排名:百度、谷歌官方都已做出声明会优先收录采用 HTTPS 的网站,采用 HTTPS 可以提升被搜索排名,提高站点可信度、品牌形象

杜绝钓鱼网站:HTTPS 地址栏绿色图标可以帮助用户识别出钓鱼网站,保障用户和企业的利益不受损害,增强用户信任。

正文 👇

1. 在 Tencent Cloud 申请免费的 SSL 证书

进入 Tencent 官方网站的控制台

右上角登录 => 登录后点击右上角控制台 => 进入控制台页面

云产品中找到 SSL 证书

二话不说,点它!!!

三话不说,申请它!!!

四话不说,确定它!!!

信息会填吧,不会填请手动删除你的服务器➕公司辞职

接下来傻瓜无脑下一步弄完后等待申请下来就好了

申请好后 👇

下载到电脑上,切上葱花,留着备用

2. 配置 aliyun 端口打开 22 端口支持 FileZilla 连接

我们这里配置端口让 FileZilla 连接主要是用来将证书 copy 到服务器一份,觉得配置端口再下载 FileZilla 麻烦的可以去网上搜直接通过命令行将文件拷贝到 Linux 主机的方式

打开安全组配置

可以看到我对已经对 22 端口进行过设置了

没有配置的话:右上角 => 添加安全组规则

这里也有一个教连接 FileZilla 的教程也可以看看

3. 使用 FileZilla 连接服务器

点此官网走起,直接找到 Quick download links 的两个大按钮,点击 Download FileZilla Client 就行,下载你对应系统的版本,然后无脑安装并打开

Mac 右上角文件 => 站点管理 => 新建站点 => 注意协议选 SFTP 图上的没改、填入 ip、端口 22、用户名、密码然后 => 连接 => 提示你主机密钥不匹配直接确定即可

直到连接完成

4. 将 SSL 证书 拷贝到服务器

你从 Tencent Cloud 下载的 SSL 证书包中会包含如下文件:
Apache、IIS、Nginx、Tomcat、www.xxx.xxx.csr
这里因为我们是 Nginx 环境,所以当然是用 Nginx 咯

我们安装的 Nginx 一般都是在服务器的 /etc/nginx/ 目录中特别是根据本教程最顶部的我另外一篇博客描述 LNMP 的安装做的同学,如果你的不是,请找到你的 Nginx 安装目录

接下来我们要将下载来的 SSL 证书Nginx 文件夹下的两个文件 1_www.xxx.xxx_bundle.crt 2_www.xxx.xxx.key 都通过 FileZilla 拷贝到服务器的 /etc/nginx 目录下,下面是步骤,先打开 FileZilla 并连接上你的服务器 👇

至此,我们就通过上图的步骤将 SSL 证书 放到服务器的指定位置了

5. 配置 SSL 证书使其正常使用

在 FileZilla 中进入此目录 👉 /etc/nginx/sites-available 会看到有一个文件叫 default 我们将要编辑它(还是再声明一下,如果你在这个目录找不到 default 文件,那么如果你不是按照该教程顶部推荐的我的另一篇安装 LNMP 的教程安装的配置的话那你就要找你 Nginx 的对应目录对应的配置文件了)

如果你是 Apache、IIS、Tomcat 之类的点此链接

我们打开它并编辑它(下面有完整文件内容展示),增加 👇

#SSL 访问端口号为 443
listen 443;
ssl on;
#填写绑定证书的域名
server_name www.xxx.xxx;
#证书、私钥文件就是你拷贝到 /etc/nginx 目录下的那两个文件
#证书文件名称
ssl_certificate 1_www.xxx.xxx_bundle.crt;
#私钥文件名称
ssl_certificate_key 2_www.xxx.xxx.key;
ssl_session_timeout 5m;
#请按照以下协议配置
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
#请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;

#注意:由于版本问题,配置文件可能存在不同的写法。例如:Nginx 版本为 nginx/1.15.0 以上请使用一行 listen 443 ssl 代替上面的 listen 443 和 ssl on。
#可以通过 nginx -v 查看你的版本

ok,保存并关闭,FileZilla 会提示是否回传到服务器,确定,这样就配置完成了

// 命令行重启 nginx
service nginx restart

// 命令行运行测试来测试配置是否正确
nginx -t
// 输出了
// nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
// nginx: configuration file /etc/nginx/nginx.conf test is successful
// 各种 ok、successful 表示配置成功

给大家看一下我的整个 default 文件的配置,当然你可以去我最顶部推荐的另一片博客中看我配置前是什么样的

server {
	listen 80 default_server;
	listen [::]:80 default_server;

	#SSL 访问端口号为 443
	listen 443;
	ssl on;
	#填写绑定证书的域名
	server_name www.xxxx.com;
	#证书文件名称
	ssl_certificate 1_www.xxxx.com_bundle.crt;
	#私钥文件名称
     	ssl_certificate_key 2_www.xxxx.com.key;
     	ssl_session_timeout 5m;
     	#请按照以下协议配置
     	ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
     	#请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。
	ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
     	ssl_prefer_server_ciphers on;
	#location / {
        #	#网站主页路径。此路径仅供参考,具体请您按照实际目录操作。
        # 	root /var/www/Laravel60/public;
        # 	index index.php index.html index.htm;
     	#}

	# SSL configuration
	#
	# listen 443 ssl default_server;
	# listen [::]:443 ssl default_server;
	#
	# Note: You should disable gzip for SSL traffic.
	# See: https://bugs.debian.org/773332
	#
	# Read up on ssl_ciphers to ensure a secure configuration.
	# See: https://bugs.debian.org/765782
	#
	# Self signed certs generated by the ssl-cert package
	# Don't use them in a production server!
	#
	# include snippets/snakeoil.conf;

	root /var/www/Laravel60/public;

	# Add index.php to the list if you are using PHP
	index index.php index.html index.htm index.nginx-debian.html;

	server_name _;

	location / {
		# First attempt to serve request as file, then
		# as directory, then fall back to displaying a 404.
		# try_files $uri $uri/ =404;
		try_files $uri $uri/ /index.php?$query_string;
	}

	# pass PHP scripts to FastCGI server
	#
	location ~ \.php$ {
		include snippets/fastcgi-php.conf;
	#
	#	# With php-fpm (or other unix sockets):
		fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
	#	# With php-cgi (or other tcp sockets):
	#	fastcgi_pass 127.0.0.1:9000;
	}

	# deny access to .htaccess files, if Apache's document root
	# concurs with nginx's one
	#
	location ~ /\.ht {
		deny all;
	}
}


# Virtual Host configuration for example.com
#
# You can move that to a different file under sites-available/ and symlink that
# to sites-enabled/ to enable it.
#
#server {
#	listen 80;
#	listen [::]:80;
#
#	server_name example.com;
#
#	root /var/www/example.com;
#	index index.html;
#
#	location / {
#		try_files $uri $uri/ =404;
#	}
#}

6. 配置域名解析

为什么要配置域名解析,通俗讲就是把你的域名和你的 IP 地址进行绑定,绑定了之后域名就知道该进哪个 IP 的服务器了

首先,进入你的云控制台(我这里用的是 aliyun)

aliyun 控制台 => 域名 => 域名解析 => 添加配置配置相应内容

点击确定,就配置好了

7. 大功告成

接下来你就可以通过 Https 来访问你的网站了,有问题的同学请在下方留言评论,有缘看到会回复

是菜鸟?没关系。想要从零学会如何在你的服务器上配置 LNMP 环境及 Laravel,我对此流程做了非常详细的教程,点它学习👉【2020 年最新】新手从零配置 服务器的 LNMP 及 Laravel 环境 超纯净无报错 (Linux、Nginx、MySQL、PHP、Laravel)

写作不易,不多说了,手指头还在的就点赞吧!

It's not easy to write. If the finger is still on your hand, Please tap the like button on the website.

Thank you!