Nginx 备忘录

317 阅读3分钟

是什么

Nginx 粗浅介绍 和 常用配置

讲什么

  1. Nginx-介绍
  2. Nginx-正向代理
  3. Nginx-反向代理
  4. Nginx-跨域配置
  5. Nginx-Https启用
  6. Nginx-防盗链
  7. Nginx-gzip启用

Nginx-介绍

Nginx是一款轻量级的网页服务器、反向代理服务器。相较于Apache、lighttpd具有占有内存少,稳定性高等优势。

它可以用来:

  1. 静态资源服务-通过本地文件系统提供服务
  2. 反向代理服务-缓存、负载均衡
  3. API服务

Nginx-正向代理

正向代理:需在客户端浏览器中配置代理服务器,然后通过代理服务器来进行访问外网,将访问到的局域网以外的网站内容返回给客户端,这种代理服务称之为:正向代理。

  1. 可做缓存,加速访问资源;
  2. 可以做内网限制
  3. 对客户端访问授权,上网进行认证;
  4. 代理可以记录用户访问记录
# vi /root/nginx-1.17.0/conf/nginx.conf
server {
	resolver 192.168.1.1                        # 指定 Nginx 服务器 IP 地址
	listen       80;
	location / {
			proxy_pass http://$http_host$request_uri; # 设定代理服务器的协议和地址
	}
}

Nginx-反向代理

反向代理:无需在客户端进行配置即可访问,我们只需要将请求发送给反向代理服务器,然后由反向代理服务器去选择要访问的目标服务器获取数据后,在返回给客户端。

  1. 保证内网安全,通常将反向代理作为公网访问地址,Web 服务器是内网;
  2. 负载均衡,通过反向代理服务器来优化网站的负载;

使用Nginx反向代理,根据所访问的路径跳转至不同端口的服务中。

Nginx 监听端口为:9001

访问 http://192.168.1.1:9001/abc直接跳转至192.168.1.1:8080 访问 http://192.168.1.1:9001/def直接跳转至192.168.1.1:8081

  1. 配置反向代理至Nginx服务器nginx.conf配置文件;
# vim /usr/local/nginx/conf/nginx.conf
server {
		listen       9001;
		server_name  192.168.1.10;

		location ~ /special/ {
				proxy_pass http://192.168.1.1:8080;
		}

		location ~ /home/ {
				proxy_pass http://192.168.1.1:8081;
		}
}
  1. 编辑防火墙配置文件,添加对外开放端口8080、8081、9001;
# vim /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8081 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 9001 -j ACCEPT
  1. 重启防火墙
/etc/init.d/iptables restart
service iptables status
  1. 重启Nginx服务
# fuser -k 80/tcp
# cd /usr/local/nginx/
# cd sbin/
# ls
nginx
# ./nginx -s stop
# ./nginx 

Nginx-跨域配置

http {
    #允许跨域请求的域,*代表所有
    add_header 'Access-Control-Allow-Origin' *;
    #允许带上cookie请求
    add_header 'Access-Control-Allow-Credentials' 'true'; 
    #允许请求的方法,比如 GET/POST/PUT/DELETE
    add_header 'Access-Control-Allow-Methods' *;
    #允许请求的header
    add_header 'Access-Control-Allow-Headers' *;
}

Nginx-Https启用

  1. 安装SSL模块 要在nginx中配置https,就必须安装ssl模块,也就是: http_ssl_modul
  2. 配置HTTPS 把ssl证书 *.crt 和 私钥 *.key 拷贝到 /usr/local/nginx/conf 目录中
  3. 新增 server 监听 443 端口
server {
    listen  443;
    # 你的域名 
    server_name dsying.cn; 
    # 开启ssl
    ssl on;

    # 配置ssl证书
    ssl_certificate dsying.cn.crt;
    # 配置ssl秘钥
    ssl_certificate_key dsying.cn.key;

    # ssl会话cache
    ssl_session_cache shared:SSL:1m;
    # ssl会话超时时间
    ssl_session_timeout 5m;


    location / { 
        proxy_pass http://公网地址:项目端口号;
    }
}

Nginx-防盗链

http {
	valid_referers baidu.com;
	if ($invalid_referer) {
			return 404
	}
}

Nginx-gzip启用

gzip  on;
gzip_min_length  1k;
gzip_buffers     4 16k;
gzip_http_version 1.1;
gzip_comp_level 9;
gzip_types       text/plain application/x-javascript text/css application/xml text/javascript application/x-httpd-php application/javascript application/json;
gzip_disable "MSIE [1-6]\.";
gzip_vary on;