文章目录
Nginx&Https的配置
01、Https认识
HTTP(HyperText Transfer Protocol:超文本传输协议)是一种用于分布式、协作式和超媒体信息系统的应用层协议。 简单来说就是一种发布和接收 HTML 页面的方法,被用于在 Web 浏览器和网站服务器之间传递信息。
HTTP 默认工作在 TCP 协议 80 端口,用户访问网站 http:// 打头的都是标准 HTTP 服务。
HTTP 协议以明文方式发送内容,==不提供任何方式的数据加密,==如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此,HTTP协议不适合传输一些敏感信息,比如:信用卡号、密码等支付信息。
HTTPS(Hypertext Transfer Protocol Secure:超文本传输安全协议)是一种透过计算机网络进行安全通信的传输协议。HTTPS 经由 HTTP 进行通信,但利用 SSL/TLS 来加密数据包。HTTPS 开发的主要目的,是提供对网站服务器的身份认证,保护交换数据的隐私与完整性。
02、Https的应用场景
1、当然考虑网站数据传递的安全性
2、基于前后端分离开发方式,比如微信小程序,APP开发,比如ios开发。等这些移动端应用开发,比如:ios苹果软件开发,如果说你的软件要上架到苹果应用市场,那么你的服务器接口必须是:https。或者微信小程序:在真实的项目发布的,如果不是https的接口你也是通不过。
03、Https监听的端口
443
04、Https实现步骤
1、你必须要有要有个域名,
2、并且要有服务器(提供ip)
3、并且服务器ip和你域名要进行解析
4、免费领取一个ssl安全证书。
5、把域名和ssl安全证书进行绑定授权
6、授权成功以后,然后把证书安装到nginx中。
05、购买域名
万网:https://wanwang.aliyun.com/
购买成功以后。进入到阿里云的【控制面板】中,找到【域名】配置
06、域名备案
购买域名一定要备案才能进行下面的使用,否则你是不能去解析和映射的IP服务器,备案的地址:
https://beian.aliyun.com/?spm=a2c1d.8251892.top-nav.dicp.a56c5b762IUqTs
如果不明白:多问客服和提交工单.
07、购买阿里云服务器
得到服务Ip。
08、域名和IP的绑定
一般建议:主域名:www.xxx.com , xxxx.com
一般建议:API的域名:api.xxx.com
01、对域名进行解析
输入自己服务器的IP地址
主机记录可以配WWW或是*
02、最终配置如下
09、开放服务端口
如果是单机部署多应用的话,要开放如下几个端口即可:
- 80
- 443
如果是多机部署多应用的话,那么你必须开放对应服务器安装的服务的端口,比如你这个服务器安装了
redis、mysql、kafka ,zk
-
6379
-
3306
-
2181
如何开放呢?在esc服务器下的【安全组中】
提示:
开放端口的原则就是:如果你的服务(tomcat,nginx,mysql,kafka等)如果你要对外访问的话,你就必须在安全组中把这些服务器的端口进行配置开放即可。也就说:你一定在安全组中开放了,才可以对外访问。否则全部拒绝。
10、申请SSL证书
在搜索栏输入SSL
申请免费证书,输入对应的域名
创建证书
填写证书申请
对证书进行下载
选择需要部署的服务器类型
将证书下载后解压得到两个文件
11、安装Nginx服务
Nginx安装
nginx下载:http://nginx.org/en/download.html
01、创建nginx服务器目录
mkdir -p /www/kuangstudy/nignx cd /www/kuangstudy/nignx
02、下载安装
wget http://nginx.org/download/nginx-1.20.1.tar.gz
03、安装编译工具及库文件
yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel
04、解压nginx
tar -zxvf nginx-1.20.1.tar.gz
05、创建nginx的临时目录
mkdir -p /var/temp/nginx
06、进入安装包目录
cd nginx-1.20.1
07、编译安装
./configure \ --prefix=/usr/local/nginx \ --pid-path=/var/run/nginx.pid \ --lock-path=/var/lock/nginx.lock \ --error-log-path=/var/log/nginx/error.log \ --http-log-path=/var/log/nginx/access.log \ --with-http_gzip_static_module \ --http-client-body-temp-path=/var/temp/nginx/client \ --http-proxy-temp-path=/var/temp/nginx/proxy \ --http-fastcgi-temp-path=/var/temp/nginx/fastgi \ --http-uwsgi-temp-path=/var/temp/nginx/uwsgi \ --http-scgi-temp-path=/var/temp/nginx/scgi \ --with-http_stub_status_module \ --with-http_ssl_module \ --with-http_stub_status_module
安装以后的目录信息
nginx path prefix: "/usr/local/nginx" nginx binary file: "/usr/local/nginx/sbin/nginx" nginx modules path: "/usr/local/nginx/modules" nginx configuration prefix: "/usr/local/nginx/conf" nginx configuration file: "/usr/local/nginx/conf/nginx.conf" nginx pid file: "/var/run/nginx.pid" nginx error log file: "/var/log/nginx/error.log" nginx http access log file: "/var/log/nginx/access.log" nginx http client request body temporary files: "/var/temp/nginx/client" nginx http proxy temporary files: "/var/temp/nginx/proxy" nginx http fastcgi temporary files: "/var/temp/nginx/fastgi" nginx http uwsgi temporary files: "/var/temp/nginx/uwsgi" nginx http scgi temporary files: "/var/temp/nginx/scgi"
08、 make编译
make
09、 安装
make install
10、 进入sbin目录启动nginx
cd /usr/local/nginx/sbin
执行nginx启动
./nginx
#停止: ./nginx -s stop #重新加载: ./nginx -s reload
11、打开浏览器,访问虚拟机所处内网ip即可打开nginx默认页面,显示如下便表示安装成功:
http://ip
12、注意事项
如果在云服务器安装,需要开启默认的nginx端口:80
如果在虚拟机安装,需要关闭防火墙
本地win或mac需要关闭防火墙
nginx的安装目录是:/usr/local/nginx/sbin
13、配置nginx的环境变量
vim /etc/profile
在文件的尾部追加如下:
export NGINX_HOME=/usr/local/nginx export PATH=$NGINX_HOME/sbin:$PATH
重启配置文件
source /etc/profile
12、ssl安全证书的上传
在nginx的conf目录下新建一个cert目录,并将这两个文件上传到cert目录下
13、nginx和ssl配置
# 这个服务器是http://www.itbooking.net的服务
server {
listen 80;
server_name www.itbooking.net; #需要将yourdomain.com替换成证书绑定的域名。
rewrite ^(.*)$ https://$host$1; #将所有HTTP请求通过rewrite指令重定向到HTTPS。
location / {
index index.html index.htm;
}
}
# 这个服务器是https://www.itbooking.net的服务
server {
listen 443 ssl;
#配置HTTPS的默认访问端口为443。
#如果未在此处配置HTTPS的默认访问端口,可能会造成Nginx无法启动。
#如果您使用Nginx 1.15.0及以上版本,请使用listen 443 ssl代替listen 443和ssl on。
server_name www.itbooking.net; #需要将yourdomain.com替换成证书绑定的域名。
root html;
index index.html index.htm;
ssl_certificate cert/6179501_www.itbooking.net.pem; #需要将cert-file-name.pem替换成已上传的证书文件的名称。
ssl_certificate_key cert/6179501_www.itbooking.net.key; #需要将cert-file-name.key替换成已上传的证书密钥文件的名称。
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
#表示使用的加密套件的类型。
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #表示使用的TLS协议的类型。
ssl_prefer_server_ciphers on;
location / {
root html; #站点目录。
index index.html index.htm;
}
}
校验配置是否有误如下:
[root@iZuf62zev3la2ivndnxra5Z servers]# nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
然后重启nginx服务
nginx -s reload
然后访问服务器
https://www.itbooking.net/
说明安装成功!
14、如果配置应用程序的https服务呢?
1、准备一个springboot项目
2、编写一个首页
3、上传项目到云服务器上
nohup java -jar springboot-app-0.0.1-SNAPSHOT.jar --server.port=8080 >>1.txt &
nohup java -jar springboot-app-0.0.1-SNAPSHOT.jar --server.port=8081 >>2.txt &;
nohup java -jar springboot-app-0.0.1-SNAPSHOT.jar --server.port=8082 >>3.txt &;
4、配置nginx和tomcat的负载均衡配置
5、完成测试和配置
15、完整配置
upstream tomcatservers {
server 127.0.0.1:8080;
server 127.0.0.1:8081;
server 127.0.0.1:8082;
}
server {
listen 80;
server_name www.itbooking.net; #需要将yourdomain.com替换成证书绑定的域名。
rewrite ^(.*)$ https://$host$1; #将所有HTTP请求通过rewrite指令重定向到HTTPS。
location / {
proxy_pass http://tomcatservers;
}
}
#以下属性中,以ssl开头的属性表示与证书配置有关。
server {
listen 443 ssl;
#配置HTTPS的默认访问端口为443。
#如果未在此处配置HTTPS的默认访问端口,可能会造成Nginx无法启动。
#如果您使用Nginx 1.15.0及以上版本,请使用listen 443 ssl代替listen 443和ssl on。
server_name www.itbooking.net; #需要将yourdomain.com替换成证书绑定的域名。
root html;
index index.html index.htm;
ssl_certificate cert/6179501_www.itbooking.net.pem; #需要将cert-file-name.pem替换成已上传的证书文件的名称。
ssl_certificate_key cert/6179501_www.itbooking.net.key; #需要将cert-file-name.key替换成已上传的证书密钥文件的名称。
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
#表示使用的加密套件的类型。
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #表示使用的TLS协议的类型。
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://tomcatservers;
}
}
#以下属性中,以ssl开头的属性表示与证书配置有关。
server {
listen 443 ssl;
#配置HTTPS的默认访问端口为443。
#如果未在此处配置HTTPS的默认访问端口,可能会造成Nginx无法启动。
#如果您使用Nginx 1.15.0及以上版本,请使用listen 443 ssl代替listen 443和ssl on。
server_name api.itbooking.net; #需要将yourdomain.com替换成证书绑定的域名。
root html;
index index.html index.htm;
ssl_certificate cert/6184356_api.itbooking.net.pem; #需要将cert-file-name.pem替换成已上传的证书文件的名称。
ssl_certificate_key cert/6184356_api.itbooking.net.key; #需要将cert-file-name.key替换成已上传的证书密钥文件的名称。
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
#表示使用的加密套件的类型。
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #表示使用的TLS协议的类型。
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://tomcatservers;
}
}
记住:一定要重启nginx服务器即可。
16、宝塔的隐患 - Nginx安装的隐患
前提,域名要备案。必须手动安装nginx,如果之前使用宝塔安装过nginx的话,直接把阿里云服务器重置,换个系统,因为宝塔装nginx会写进去一些环境,卸载是卸载不干净的,切记!