NGINX

149 阅读3分钟

Nginx

轻量级的web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。占用内存少、并发能力强

特点:

  1. 热部署:nginx在修改配置文件后,不需要重启,重载操作;
  2. 可以高并发连接:相同配置的服务器,nginx比apache能接受的连接多很大;
  3. 低的内存消耗:相同的服务器,nginx比apache低的消耗;
  4. 处理响应请求很快:nginx处理静态文件的响应速度很快(apache处理动态页面更快);
  5. 具有很高的可靠性;

与Apache的区别

两者底层架构不一样:除了以上高并发、低内存消耗、处理静态文件请求,apache属于重量级软件,apache的安全性更高;

两者运行模式不一样。

代理配置,代理缓存

配置:/etc/nginx

缓存一般设置在/var/cache (配置额外的自定义代理 include /conf/extra/*.conf);

eg:

proxy_cache_path /var/cache levels=1:2 keys_zone=my_cache:10m;

server {
	listen 80;
	server_name test.com;

    location / {
        proxy_cache my_cache;
        proxy_pass http://127.0.0.1:3000;
        proxy_set_header Host $host;
    }
}

配置参数:proxy_cache_path缓存目录,levels目录分级, keys_zone缓存名字,10m缓存大小(兆)

tips:设置Vary头信息,针对某个头信息相同的情况下才能用代理缓存,一般会比对User-Agent,Accept等

X-Forwarded-For解决代理丢失客户的ip

location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_set_header X-Forwared-For $remote_addr;
    }

负载均衡up_stream

反向代理后端如果有多台服务器,自然形成负载均衡

up_stream完成分发

默认的均衡算,针对后端服务器的顺序,逐个请求。也有其他负载均衡算法,比如一致性Hash,需要安装第三方模块。

server {
	listen 81;
	server_name localhost;
	root html;
    access_log logs/81-access.log main;
}

server {
	listen 82;
	server_name localhost;
	root html;
    access_log logs/82-access.log main;
}

up_stream imgserver {
	server 192.168.1.200:81 weight=1 max_fails=2 fail_timeout=3
	server 192.168.1.200:82 weight=1 max_fails=2 fail_timeout=3
}

server {
	listen 80;
	server_name localhost;
	gzip on;
	gzip_buffers 32 4k;
	gzip_comp_level 6;
	gzip_min_length 4000;
	gzip_types text/css text/xml application/x-javascript;
	
	root html;
	location \ {
		//...
	}
	location ~* \.(jpg|jpeg|gif|png)$ {
		#expires 1d;
		proxy_pass http://imgserver;
	}
}

linux下命令

使用systemctl管理Nginx服务

您可以像任何其他systemd单位一样管理Nginx服务。

要停止Nginx服务,请运行:sudo systemctl stop nginx

要再次启动,请键入:sudo systemctl start nginx

重新启动Nginx服务:sudo systemctl restart nginx

在进行一些配置更改后重新加载Nginx服务:sudo systemctl reload nginx

如果你想禁用Nginx服务在启动时启动:sudo systemctl disable nginx

并重新启用它:sudo systemctl enable nginx

windows下命令

start nginx.exe //启动 nginx.exe -s reload //重启 nginx.exe -s stop //快速停止 nginx.exe -s quit //完整有序停止

nginx第三方模块

ngx_http_upstream_consistent_hash一致性hash算法

代理服务器

反向代理服务器

外网访问内网

反向代理其实就是客户端去访问服务器时,他并不知道会访问哪一台,感觉就是客户端访问了Proxy一样,而实则就是当proxy关口拿到用户请求的时候会转发到代理服务器中的随机(算法)某一台。而在用户看来,他只是访问了Proxy服务器而已,典型的例子就是负载均衡了。

正向代理服务器

内网访问外网

正向代理通过上面的图理解其实就是用户想从服务器拿资源数据,但是只能通过proxy服务器才能拿到,所以用户A只能去访问proxy服务器然后通过proxy服务器去服务器B拿数据,这种情况用户是明确知道你要访问的是谁,在我们生活中最典型的案例就是"科学FQ"了,也是通过访问代理服务器最后访问外网的。