2024年Web前端最全分布式进阶(二十三):Nginx 服务器应用配置_nginx 配置微服务(2),2024年最新月薪20k+的Web前端面试都问些什么

最后

除了简历做到位,面试题也必不可少,整理了些题目,前面有117道汇总的面试到的题目,后面包括了HTML、CSS、JS、ES6、vue、微信小程序、项目类问题、笔试编程类题等专题。

在这里插入图片描述
javascript systemctl restart nginx(重启)

当修改了配置文件使用:

nginx -s reload

建议不要停止再重启,以防报错。

二、反向代理配置

2.1 什么是反向代理?

反向代理和正向代理的区别就是:正向代理代理客户端,反向代理代理服务器。

反向代理(Reverse Proxy),其实客户端对代理是无感知的,因为客户端不需要任何配置就可以访问,我们只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,再返回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实服务器IP地址。

2.2 反向代理的好处

在这里插入图片描述

  1. 保护了真实的web服务器,web服务器对外不可见,外网只能看到反向代理服务器,而反向代理服务器上并没有真实数据,因此,保证了web服务器的资源安全。
  2. 反向代理为基础产生了动静资源分离以及负载均衡的方式,减轻web服务器的负担,加速了对网站访问速度。
  3. 节约了有限的IP地址资源,企业内所有的网站共享一个在Internet中注册的IP地址,这些服务器分配私有地址,采用虚拟主机的方式对外提供服务;

在这里插入图片描述

2.3 http 反向代理配置信息

nginx反向代理http配置步骤如下:

  1. vi /etc/nginx/nginx.conf 新增如下配置信息:
server {
	listen 80; #监听端口
	server_name www.zyjk.com; #域名可以有多个,用空格隔开
	charset utf-8; #编码方式
	#对‘/’启用反向代理
	location / {
	  proxy_pass http://22.188.15.185; #必须要加http开头
	  proxy_set_header X-Real-IP $remote\_addr;
	}
	#对‘/images’启用反向代理
	location /images {
	  proxy_pass http://22.188.15.186; #必须要加http开头
	  proxy_set_header X-Real-IP $remote\_addr;
	  client_max_body_size 10m; #最大消息体
	  client_body_buffer_size 128k; #最大缓存消息体
	  proxy_connect_timeout 30; #nginx将一个请求发送至upstream server之前等待的最大时长
	  proxy_send_timeout 30; # 在连接断开之前两次发送至upstream server写操作的最大间隔时长
	  proxy_read_timeout 30; #在连接断开之前两次从接收upstream server读操作的最大间隔时长
	}
}

  1. nginx -s reload重新加载配置。

三、反向代理集群搭建(待补充)

四、正向代理配置

4.1 什么是正向代理?

前面提到过,正向代理代理客户端,反向代理代理服务器

理解正向代理反向代理这两种代理的关键在于代理服务器所代理的对象是什么,正向代理代理的是客户端,我们需要在客户端进行一些代理的设置。而反向代理代理的是服务器,作为客户端的我们是无法感知到服务器的真实存在的。
在这里插入图片描述

4.2 http 正向代理配置信息

正向代理:如果把局域网外的Internet想象成一个巨大的资源库,则局域网中的客户端要访问Internet,则需要通过代理服务器来访问,这种代理服务就称为正向代理。

Nginx配置如下:

server {
    resolver 8.8.8.8;
    resolver_timeout 5s;
    listen 0.0.0.0:80;
    access_log  /home/reistlin/logs/proxy.access.log;
    error_log   /home/reistlin/logs/proxy.error.log;
    location / {
        proxy_pass $scheme://$host$request_uri;
        proxy_set_header Host $http_host;
        proxy_buffers 256 4k;
        proxy_max_temp_file_size 0;
        proxy_connect_timeout 30;
        proxy_cache_valid 200 302 10m;
        proxy_cache_valid 301 1h;
        proxy_cache_valid any 1m;
    }
}

Nginx 正向代理配置说明

  1. 配置 DNS 解析 IP 地址,比如 Google Public DNS,以及超时时间(5秒)。
resolver 8.8.8.8;
resolver_timeout 5s;

  1. 配置正向代理参数,均是由 Nginx 变量组成。其中 proxy_set_header 部分的配置,是为了解决如果 URL 中带 “.”(点)后 Nginx 503 错误。
proxy_pass $scheme://$host$request_uri;

proxy_set_header Host $http_host;

  1. 配置缓存大小,关闭磁盘缓存读写减少I/O,以及代理连接超时时间。
proxy_buffers 256 4k;

proxy_max_temp_file_size 0;

proxy_connect_timeout 30;

  1. 配置代理服务器 Http 状态缓存时间。
proxy_cache_valid 200 302 10m;

proxy_cache_valid 301 1h;

proxy_cache_valid any 1m;

注意⚠️:nginx正向代理不支持代理 Https 网站。

因为 Nginx 不支持 CONNECT,所以无法正向代理 Https 网站。如果访问 Https 网站,比如:https://www.google.comNginx access.log 日志如下:


 "CONNECT www.google.com:443 HTTP/1.1" 400


配置完nginx之后, nginx -s reload重新加载配置。

如果出现80端口被占用,Lsof -i :80 查看80端口的pid进程号,然后用Kill -9 +进程号,删除进程,再重启服务。

查看dns方法

cat /etc/resolv.conf 

4.3 正向代理使用

在需要访问外网的机器上(Linux系统)执行以下操作之一即可:

export http_proxy=http://yourproxyaddress:proxyport 

gedit ~/.bashrc  
export http_proxy=http://yourproxyaddress:proxyport 

其中,yourproxyaddress也就是你的Nginx服务器的ip了,proxyport就是上面配置中的80,可以根据自己的需要修改。

4.4 Nginx 支持正向代理 https

nginx本身是不支持https协议请求转发,为了让nginx能达到这一效果需要借助第三方模块ngx_http_proxy_connect_module。首先下载这一模块到服务器,然后准备nginx环境。

// 下载gcc,之后还可能有一些安装包要下
yum -y install pcre-devel zlib-devel gcc gcc+c++ make openssl-devel pcre-devel  zlib-devel patch   
tar xf nginx-1.6.0.tar.gz
unzip /root/ngx_http_proxy_connect_module-master.zip
cd  /root/nginx-1.6.0/
patch  -p1 < /root/ngx_http_proxy_connect_module-master/proxy_connect.patch  
./configure --add-module=/root/ngx_http_proxy_connect_module-master/ngx_http_proxy_connect_module
make &&  make install

编译安装成功后,配置nginx正向代理:

#user nobody;
worker_processes  1;
#error\_log logs/error.log;
#error\_log logs/error.log notice;
#error\_log logs/error.log info;
#pid logs/nginx.pid;
events {
    worker_connections  1024;
}
 
http {
    include       mime.types;
    default_type  application/octet-stream;
    #access\_log logs/access.log main;
    sendfile        on;
    #tcp\_nopush on;
    keepalive_timeout  65;
    #gzip on;
 
server {
        listen 88;                #监听端口
        resolver 183.60.82.98;   #dns解析地址
        server_name  _;
        #charset koi8-r;
        #access\_log logs/host.access.log main;
        location / {
             proxy_pass https://$host$request\_uri;     #设定http代理服务器的协议和地址
             proxy_set_header HOST $host;
             proxy_buffers 256 4k;
             proxy_max_temp_file_size 0k;
             proxy_connect_timeout 30;
             proxy_send_timeout 60;
             proxy_read_timeout 60;
             proxy_next_upstream error timeout invalid_header http_502;
            #root html;
            #index index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root  html;
        }
    }
 
server {
       resolver 8.8.8.8;   #dns解析地址
       listen 89;          #代理监听端口
       proxy_connect;
       proxy_connect_allow            443 563;
       location / {
             proxy_pass https://$host$request\_uri;     #设定https代理服务器的协议和地址
             proxy_set_header HOST $host;
             proxy_buffers 256 4k;
             proxy_max_temp_file_size 0k;
             proxy_connect_timeout 30;
             proxy_send_timeout 60;
             proxy_read_timeout 60;
             proxy_next_upstream error timeout invalid_header http_502;
       }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }  
}  

当配置文件配置好之后保存即可,重启nginx,进行测试:

nginx -s reload重新加载配置。

去内网服务器里curl,可以在环境变量里添加代理:

vim  /etc/profile

...
...
#export https_proxy=正向代理IP:端口
export https_proxy=192.168.3.17:89

在这里插入图片描述

另一种方式不用加环境变量,临时代理

#curl -i  --proxy 代理IP:端口      要访问域名
curl -i  --proxy 192.168.3.17:89      www.baidu.com

4.4 正向、反向代理对比

通过四、五章节的讲解,正向代理代理客户端,反向代理代理服务器。可以看到反向代理服务器对客户端透明,客户端无需任何配置,只需访问反向代理服务器IP,即可实现访问内网服务。Nginx反向代理服务器只需配置相应的代理规则即可。

正向代理代理客户端,需要在作为Nginx正向代理服务器中配置相应的代理规则,配置方式与反向代理基本一致,同一服务器既作为反向代理服务器、又作为正向代理服务器,是由监听端口转发。Nginx作为正向代理服务器无法代理Https,若需支持的话,需要额外安装第三方模块ngx_http_proxy_connect_module

五、SSL 配置

5.1 敲黑板

随着互联网的快速发展,给我们的生活带来便利的同时,也伴随着网络钓鱼、信息泄露、网络诈骗等网络安全事件的频繁发生,企业网站被钓鱼网站仿冒,遭受经济损失,影响品牌形象。

如果网站不使用SSL证书,数据以HTTP明文传输,极容易被第三方监听、截取和篡改,而导致用户信息被泄露,给在线用户带来直接损失。通过部署SSL证书后能确保信息传输的安全性,可防止信息泄露。

SSL(Secure Sockets Layer安全套接字协议),及其继任者传输层安全(Transport Layer SecurityTLS)是为网络通信提供安全及数据完整性的一种安全协议。TLSSSL传输层应用层之间对网络连接进行加密。

SSL证书是数字证书(数字证书包括:SSL证书客户端证书代码签名证书等)的一种,因为配置在服务器上也称为服务器SSL证书SSL证书就是遵守SSL协议,由受信任的数字证书颁发机构CA(如:沃通CA)在验证服务器身份后颁发的一种数字证书,它使用ssl协议在浏览器和web server之间建立一条安全通道,数据信息在clientserver之间的安全传输.。

SSL协议的特点:

  1. SSL协议可用于保护正常运行于TCP之上的任何应用协议,如HTTP、FTP、SMTPTelnet的通信,最常见的是用SSL来保护HTTP的通信。
  2. SSL协议的优点在于它是与应用层协议无关的。高层的应用协议(如HTTP、FTP、Telnet等)能透明地建立于SSL协议之上。
  3. SSL协议在应用层协议之前就已经完成加密算法、通信密钥的协商以及服务器的认证工作。在此之后应用层协议所传送的数据都会被加密,从而保证通信的安全性。

SSL的功能 :

  1. 客户对服务器的身份认证。SSL服务器允许客户的浏览器使用标准的公钥加密技术和一些可靠的认证中心(CA)的证书,来确认服务器的合法性。
  2. 服务器对客户的身份认证。也可通过公钥技术和证书进行认证,也可通过用户名,password来认证。
  3. 建立服务器与客户之间安全的数据通道。SSL要求客户与服务器之间所有发送的数据都被发送端加密、接收端解密,同时还检查数据的完整性。

使用SSL证书的优势:

  • SSL证书用于实现数据加密传输,防止数据被泄露和篡改;
  • 用于认证服务器身份,防范被钓鱼网站攻击;
  • 用于消除浏览器地址栏发出的“不安全”警告;
  • 提高SEO搜索引擎排名;
  • 提升用户对网站的信任;
  • 有助于提高网站的在线销售业绩;

配置SSL模块首先需要CA证书,CA证书可以自己手动颁发也可以在阿里云申请。

默认情况下ssl模块并未被安装,如果要使用该模块则需要在编译nginx时指定–with-http_ssl_module参数。

5.2 CA 证书生成

本小节主要讲述如何通过证书签名生成CA证书。

首先确认nginx服务器已经安装opensslnginx已经编译ssl的模块。
在这里插入图片描述
生成秘钥和CA证书步骤:

  • 步骤1:生成key秘钥
  • 步骤2:生成证书签名请求文件(csr文件)
  • 步骤3:生成证书签名文件(CA文件)
5.2.1 生成 key 秘钥

首先,创建一个用来存放秘钥的文件夹。
在这里插入图片描述
输入加密算法:openssl genrsa -idea -out jesonc.key 1024

回车,会让输入密码,这里设置为123456,完成后会生成一个.key的文件
在这里插入图片描述

最后

推荐一些系统学习的途径和方法。

路线图

每个Web开发人员必备,很权威很齐全的Web开发文档。作为学习辞典使用,可以查询到每个概念、方法、属性的详细解释,注意使用英文关键字搜索。里面的一些 HTML,CSS,HTTP 技术教程也相当不错。

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

HTML 和 CSS:

html5知识

css基础知识

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值