nginx反向代理配置

十月概览。

10.1-10.4-四天北京行。

10.8 - 断断续续的几场面试下来。有过上班-面试之间不同状态的切换,心力交瘁,但也收获颇多。看看合适的机会,锻炼锻炼能力

10.16 面试官问了 vue底层响应式原理? 什么是虚拟DOM? key的作用? 原型链及最后到顶层会是一个什么值? 性能优化和后台双重认证

半个钟的时间,确实这几次收获最大的一次。他跟我说“ 框架永远不能停留在只会用上 ”。一语点醒

的确,从年初到现在是该反思。vue底层真的透了吗?别迷茫

记。一次较真


什么是同源策略?

同源策略是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响。可以说Web是构建在同源策略基础之上的,浏览器只是针对同源策略的一种实现。

所谓同源是指:协议、域名、端口都相同

【 git-参考文档 】 | 【 git/0416 - nginx的参数配置 】

nginx

- nginx 是一个高性能的 HTTP 和 反向代理 服务器。其特点是占有内存少,并发能力强。

1、Http代理,反向代理:作为web服务器最常用的功能之一,尤其是反向代理;

  • nginx在做反向代理时,提供性能稳定,并且能够提供配置灵活的转发功能;

  • nginx可以根据不同的正则匹配,采取不同的转发策略;

  • 反向代理,代理的是服务端;

反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。

// https://www.cnblogs.com/qdhxhz/p/8910174.html
// https://zhuanlan.zhihu.com/p/673485988

http {
	server_tokens off;
    #HTTP服务器
    server {
       #监听80端口,80端口是知名端口号,用于HTTP协议
       listen       80;
       #定义使用www.xx.com访问
       server_name  localhost;
        
       location / {
            root   html/Pays;
            index  index.html index.htm;
            try_files $uri $uri/ @router;
            add_header X-Content-Type-Options nosniff;
            proxy_set_header X-scheme $scheme;
            #作用是我们可以获取到客户端的真实ip
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Host $http_host;
            proxy_set_header X-Nginx-Proxy true;
            proxy_hide_header X-Powered-By;
            proxy_hide_header Vary;
       }
        
       # 开始配置我们的反向代理
       location /admin/ {
            proxy_pass http://103.100.210.42:8883;
            proxy_cookie_path / /admin;
            proxy_redirect default;
            proxy_set_header X-Real-IP $remote_addr;
            rewrite ^/admin/(.*) /$1 break;  #404
       }

	   gzip  on;
	   gzip_disable “MSIE [1-6].(?!.*SV1);
	   gzip_http_version 1.0;
	   gzip_vary on;
	   gzip_proxied any;
	   gzip_min_length 1k;
	   gzip_buffers 4 16k;
	   gzip_comp_level 6;
	   gzip_types text/plain text/css text/xml text/javascript application/json application/x-javascript application/xml application/xml+rss application/javascript;
    }
}

2、负载均衡

nginx 提供的负载均衡策略有2种:内置策略和扩展策略。内置策略为轮询,加权轮询,Ip hash。扩展策略

参考-反向代理和负载均衡 || 基础-Nginx是什么?

实战-Nginx配置 || 实战-配置高可用集群


两大步骤,实战:

2.1、在 /usr/local 目录下安装 三个包:

先安装依赖包,并做好解压工作。依赖包安装顺序【依次】为: openssl、zlib、pcre, 最后安装Nginx包。

  • 2.1.1、ssl 功能需要 openssl 库: [ wget http://www.openssl.org/source/openssl-1.0.1c.tar.gz ]

  • 2.1.2、gzip 模块需要 zlib 库:[ wget http://zlib.net/zlib-1.2.11.tar.gz ]

  • 2.1.3、rewrite 模块需要 pcre 库:[ wget http://ftp.pcre.org/pub/pcre/pcre-8.43.tar.gz ]

[ csdn - Linux 解压图解教程 ] ----|| ---- 参考安装1 ----|| ---- 参考安装2


2.2、最后 /usr/local 目录下安装 nginx:

  • 1、下载:wget http://nginx.org/download/nginx-1.2.6.tar.gz

  • 2、解压:tar -zxvf nginx-1.2.6.tar.gz ,用命令 ls 查找是否下载下来。

  • 3、进入 cd nginx-1.2.6 文件夹,操作:

有必要:

/** 此时可能暴露的问题:
 *  |
 *  1、nginx 安装时候报错:make: *** No rule to make target `build', needed by `default'. Stop. 
 */
yum install -y pcre pcre-devel openssl openssl-devel gcc gcc gcc-c++ ncurses-devel perl

/**
 *  2、当 linux安装时出现./configure: error: C compiler cc is not found 时:
 */
yum -y install gcc gcc-c++ autoconf automake make 

再执行:

  • ./configure | make | make install

  • 4、返回上一级,会出现 nginx。安装成功

  • 运行- ./sbin/nginx -s reload


3、处理报错:

3.1、nginx.pid丢失问题:
  • 在 logs 里创建 nginx.pid 文件

  • nginx同级,运行方法:

/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

成功这里会打印出ip所有的端口; 然后运行- ./sbin/nginx -s reload

Nginx常用命令

  1. 启动 Nginx: ./sbin/nginx
  2. 停止 Nginx: ./sbin/nginx -s quit
  3. Nginx 重载配置: ./sbin/nginx -s reload
  4. 查看 Nginx 版本: ./sbin/nginx -v
  5. 检查配置文件是否正确: ./sbin/nginx –t

1、配置负载均衡服务器

worker_processes  1;
events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    server_tokens off;
    keepalive_timeout  65;

    #【 配置服务器名 】
    upstream load_balance_server{
        #ip_hash;//根据ip配分到固定的服务器,防止负载均衡时不能共享内存。浪费带宽
        server 127.0.0.1:8000;
        #配置被转发的服务器,其中的 ip 推荐使用内网 ip,可以提高访问速度
        #weight 为权重,数字越大,权越高
        #下面的配置代表请求中三分之一分发给第一台服务器,三分之二的请求分发给第二台服务器。
        server 127.0.0.1:8001 weight=2;
    }

    server {
        listen       80;
        #域名,如果没有域名可以使用ip进行访问
        server_name  localhost;

        location / {
            #配置代理的地址,重点是这里,将代理转发给上方 upstream 中配置的两台服务器去处理
            #这里的 http:// 后的值必须和 upstream 后面的值一致
            proxy_pass http://load_balance_server;  #请求转向load_balance_server 定义的服务器列表
            root   html;
            index  index.html index.htm;
            add_header X-Content-Type-Options nosniff;
            proxy_set_header X-scheme $scheme;
            #作用是我们可以获取到客户端的真实ip
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Host $http_host;
            proxy_set_header X-Nginx-Proxy true;
            proxy_hide_header X-Powered-By;
            proxy_hide_header Vary;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

2、性能优化方面:

a、配置gzip,调优

  • HTTP 传输主要以文本为主,其中大量是一些静态资源文件,包括 JS / CSS / HTML / IMAGE 等。
  • gzip 压缩可以在传输的过程中对内容进行压缩,减少带宽压力的同时提高用户访问速度,是一个有效的 Web 页面性能优化手段。
  • gzip 压缩功能,可为我们节约带宽,加快传输速度,有更好的体验,也为我们节约成本。
注意:
  • 像 图片/mp3 这样的二进制文件,不必压缩,因为压缩率比较小, 比如 100->80 字节,而且压缩也是耗费CPU资源的

b、expires 缓存调优

  • 主要针对于图片,css,js等元素更改机会比较少的情况下使用,特别是图片,占用带宽大,我们完全可以设置图片在浏览器本地缓存。

  • 缺点:被缓存的页面或数据更新了,用户看到的可能还是旧的内容,反而影响用户体验。

{% img /images/08_04/nginx_expires.png %}

HTTP头部设置保护网站应用安全

1、 XSS审计

跨站脚本Cross-site scripting (XSS)是最普遍的危险攻击,经常用来注射恶意代码到你的应用以获得登录用户的数据,或者利用优先权执行一些动作,设置X-XSS-Protection能保护你的网站免受跨站脚本的攻击。

add_header X-XSS-Protection "1; mode=block";

2、Content Type选项

一些浏览器非常聪明,会猜测默认的数据传输内容,比如即使服务器说这是一个普通文本文件,浏览器也会当成一个HTML文件渲染输出显示,这会被黑客用来导向不信任的Javacript代码,设置X-Content-Type-Options为nosniff ,就是强迫浏览器尊重服务器端指定的文件类型。

add_header X-Content-Type-Options nosniff;

3、Frame选项

设置X-Frame-Options头部可以保护你的网站内容被别人包含在一个iframe中,也就是Html的框架中,如果别人用iframe包含了你的网站页面,他们就可能强迫用户在你网站某个部分点击隐藏在iframe中恶意代码,比如clickjacking攻击。

将这个选项设置为DENY是完全堵塞在一个框架中显示你的网站,SAMEORIGIN设置则是框架中只能显示来自同一个服务器的内容,而ALLOW-FROM则是你规定的白名单。

add_header X-Frame-Options "SAMEORIGIN";

http {
    server_tokens off; #nginx 版本信息泄露,服务器头部不显示
    server {
        listen       80;
        #域名,如果没有域名可以使用ip进行访问
        server_name  localhost;

        location / {
            add_header X-Frame-Options "SAMEORIGIN";
            add_header X-Content-Type-Options nosniff;
            add_header X-XSS-Protection "1; mode=block";
        }
    }
}

nginx xxs防御规则:http://blog.sina.com.cn/s/blog_3f12afd00101ox6j.html

nginx中如何设置gzip:https://www.cnblogs.com/Renyi-Fan/p/11047490.html

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值