Bootstrap

阿里云Nginx配置

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、注意事项

  1. 如果在云服务器安装,需要开启默认的nginx端口:80

  2. 如果在虚拟机安装,需要关闭防火墙

  3. 本地win或mac需要关闭防火墙

  4. 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会写进去一些环境,卸载是卸载不干净的,切记!

;