Lesson 6 http https 网站搭建

概述

  • 如果每台运行 Linux 系统的服务器上只能运行一个网站,那么人气低、流量小的草根站长就要被迫承担着高昂的服务器租赁费用了,这显然也会造成硬件资源的浪费。在虚拟专用服务器(Virtual Private Sever,VPS)与云计算技术诞生以前,IDC 服务供应商为了能够更充分地利用服务器资源,同时也为了降低购买门槛,于是纷纷启用了虚拟主机功能

  • 利用虚拟主机功能,可以把一台处于运行状态的物理服务器分割成多个“虚拟的服务器”。但是,该技术无法实现目前云主机技术的硬件资源隔离

  • nginx务器基于用户请求的不同 IP 地址、主机域名或端口号,实现提供多个网站同时为外部提供访问服务的技术,也就是说用户请求的方式不同,最终获取到的网页内容也各不相同 

实验前准备
[root@server ~]# yum  install  nginx  -y
[root@server ~]# systemctl start  nginx   # 启动httpd
[root@server ~]# systemctl enable  nginx  # 设置开机启动
[root@server conf.d]# setenforce 0
[root@server conf.d]# systemctl status firewalld.service
○ firewalld.service - firewalld - dynamic firewall daemon
     Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; pres>
     Active: inactive (dead)
       Docs: man:firewalld(1)
lines 1-4/4 (END)

 基于不同的端口访问不同的虚拟主机

原理
  • 基于端口号的虚拟主机功能,可以让用户通过一个IP地址的不同端口号来访问不同的网站

# 修改子配置文件,让所有虚拟主机使用同一个ip,但是端口不同
[root@server ~]# vim /etc/nginx/conf.d/web2.conf
...
  1 server{
  2     listen 81;
  3     server_name 192.168.25.100;
  4     root /web2;
  5 }
  6 server{
  7         listen 82;
  8         server_name 192.168.25.100;
  9         root /web3;
 10 }
...
[root@server ~]# nginx -s reload

[root@server ~]# mkdir /web2 /web3
[root@server ~]# echo web2 > /web2/index.html
[root@server ~]# echo web3 > /web3/index.html
[root@server ~]#
# 在浏览器中访问 80 无需输入端口 因为80是http的默认端口
# 但是如果访问81和82建立的http服务 必须在ip后面加:port
# 如 http://192.168.25.100:81/ 
#   http://192.168.25.100:82/

基于不同的域名访问不同的虚拟主机

原理
  • 当服务器无法给每个网站都分配一个独立的IP地址时,可以通过用户请求的域名不同实现传输不同的网页数据

在浏览器输入域名然后回车之后的一些动作:

  1. 浏览器会在缓存中查找域名相关的资源如果有则直接在浏览器中显示

  2. 上一步如果找不到,则访问Linux下的hosts文件路径:/etc/hosts (windows:C:/windows/system32/drivers/etc/hosts)文件,查看域名和ip的绑定关系,如果有直接访问该ip

# 1.在hosts文件中加入自己的域名解析
cd    C:/windows/system32/drivers/etc/hosts
....

# localhost name resolution is handled within DNS itself.
#	127.0.0.1       localhost
#	::1             localhost
192.168.25.100		www.zhangsan.com  image.zhangsan.com  bbs.zhangsan.com

....

# Linux端
[root@server ~]# vim  /etc/hosts
# 添加如下内容:
192.168.25.100  www.zhangsan.com
192.168.25.100  image.zhangsan.com

# 2.修改子配置文件 将www.xxx.com绑定给nginx的主配置的虚拟主机 将image.xxx.com绑定给子配置的虚拟主机1 将bbs.xxx.com绑定给子配置的虚拟主机2

# 主配置的虚拟主机
[root@server conf.d]# vim /etc/nginx/nginx.conf
...
 37  server {
 38         listen       80;
 39         listen       [::]:80;
 40         server_name  www.zhangsan.com; #绑定
 41         root         /usr/share/nginx/html;
....
# 子配置
[root@server conf.d]# vim /etc/nginx/conf.d/web2.conf
 1 server{
  2     listen 80;
  3     server_name image.zhangsan.com; #绑定
  4     root  /web2;
  5 }
  6 server{
  7     listen 80;
  8     server_name bbs.zhangsan.com;#绑定
  9     root  /web3;
 10 }
 
 # 3.绑定完毕后重新加载nginx
 [root@Server conf.d]# nginx -s reload
 
 # 4.在浏览器中访问这三个域名

基于不同的ip访问不同的虚拟主机

原理
  • 如果一台服务器有多个IP地址,而且每个IP地址与服务器上部署的每个网站一一对应,当用户请求的IP地址不同,则会访问到不同网页,且每个网站都有一个独立的IP地址。(常用)

  • 注意:主机必须有多个IP地址


# 1.在nginx创建多个虚拟主机
# 进入子配置文件目录 创建子配置文件为web2.conf
[root@Server ~]# cd /etc/nginx/conf.d/
[root@Server conf.d]# vim web2.conf
....
  1 server{
  2     listen 80;
  3     server_name 172.25.254.101;
  4     root  /web2;
  5 }
  6 server{
  7     listen 80;
  8     server_name 172.25.254.102;
  9     root  /web3;
 10 }
....
[root@Server conf.d]nginx -s reload

# 2.创建web2 web3目录以及其中index
[root@Server conf.d]# mkdir /web2 /web3
[root@Server conf.d]# echo web2 > /web2/index.html
[root@Server conf.d]# echo web3 > /web3/index.html

# 3.添加101及102ip
[root@server conf.d]# nmcli connection modify ens160 +ipv4.addresses 192.168.25.101/24
[root@server conf.d]# nmcli connection modify ens160 +ipv4.addresses 192.168.25.102/24
[root@server conf.d]# nmcli connection reload
[root@server conf.d]# nmcli connection up ens160
连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/3)
[root@server conf.d]#

验证完可删除新增IP 

[root@server conf.d]# nmcli connection modify ens160 -ipv4.addresses 192.168.25.102/24
[root@server conf.d]# nmcli connection modify ens160 -ipv4.addresses 192.168.25.101/24
[root@server conf.d]# nmcli connection reload
[root@server conf.d]# nmcli connection up ens160
连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/4)
[root@server conf.d]#

基于https协议的静态网站

  • 超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息。

  • HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此HTTP协议不适合传输一些敏感信息,比如信用卡号、密码等。为了解决HTTP协议的这一缺陷,需要使用另一种协议:安全套接字层超文本传输协议HTTPS。

  • HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer 或 Hypertext TransferProtocol Secure,超文本传输安全协议),是以安全为目标的HTTP通道。

  • HTTPS并不是一个新协议,而是HTTP+SSL(TLS)。原本HTTP先和TCP(假定传输层是TCP协议)直接通信,而加了SSL后,就变成HTTP先和SSL通信,再由SSL和TCP通信,相当于SSL被嵌在了HTTP和TCP之间

  • SSL 是“Secure Sockets Layer”的缩写,中文叫做“安全套接层”。它是在上世纪90年代中期,由网景公司设计的。到了1999年,SSL 应用广泛,已经成为互联网上的事实标准。IETF 就把SSL 标准化。标准化之后SSL被改为 TLS(Transport Layer Security传输层安全协议)

创建https的虚拟主机,搭建nginx+ssl的加密认证web服务器、

准备工作

[root@server ~]# setenforce  0           

[root@server ~]# systemctl stop  firewalld

[root@server ~]# systemctl disable  firewalld

[root@server ~]# yum  install  nginx  mod_ssl -y

[root@server ~]# systemctl start  nginx   # 启动
 
[root@server ~]# systemctl enable  nginx  # 设置开机启动
SSL密钥及证书制作
# 0.在/etc/nginx/创建存放密钥和证书的目录cert//certificate
                                           //n.证明;证明书;合格证书;文凭;结业证书
    也可直接在/etc/nginx/下创建
[root@server ~]# mkdir  -p  /etc/nginx/cert
//-p​​:递归创建目录。若父目录 /etc 不存在,会自动创建。

# 1.生成私钥
[root@server nginx]# openssl genrsa -out zhangsan.key 2048

# 2.通过私钥生成证书,证书是服务器信息+公钥
[root@server nginx]# openssl req -new -key zhangsan.key -x509 -days 365 -out zhangsan.crt
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----  
Country Name (2 letter code) [XX]:86 #国家
State or Province Name (full name) []:guangxi #省份
Locality Name (eg, city) [Default City]:guilin #城市
Organization Name (eg, company) [Default Company Ltd]:openlab #公司
Organizational Unit Name (eg, section) []:RHCE # 部门
Common Name (eg, your name or your server's hostname) []:zhangsan #网站
Email Address []:[email protected] #邮箱
修改配置文件将证书及私钥接入到nginx
# 1. 将新建的私钥和证书接入ngxin
[root@server nginx]# vim conf.d/web2.conf
....
 11 server{
 12         listen 443 ssl;
 13         server_name 192.168.25.100;
 14         root  /web;
 15         ssl_certificate /etc/nginx/zhangsan.crt;
 16         ssl_certificate_key /etc/nginx/zhangsan.key;
 17         index        wanglx.html;
 18 }
....

# 2.重新加载nginx
[root@server nginx]# nginx -s reload

# 3.在浏览器输入https://192.168.25.100 验证是否能打开https的站点

Lesson 6 http https 网站搭建_第1张图片

你可能感兴趣的:(linux,运维,服务器)