简介

nginx是一个高性能的http和反向代理服务器,因其稳定性、丰富的功能性、以及低能耗被广泛采用。此处省略2w字。官网地址:http://nginx.org

安装

下载地址:http://nginx.org/en/download.html

本文使用windows平台,所以以下均为windows版本配置。linux环境下几乎一样。

安装解压后的文件目录如下:

注意:此处不要双击nginx.exe运行nginx,在文件夹内的空白处shift+右键打开cmd窗口,输入start nginx.exe运行nginx服务,此时如果成功会显示nginx的欢迎页面

常用命令

  • start nginx : 启动nginx
  • nginx -s reload :修改配置后重新加载生效
  • nginx -s reopen :重新打开日志文件
  • nginx -t -c /path/to/nginx.conf 测试nginx配置文件是否正确

关闭nginx:

  • nginx -s stop :快速停止nginx
  • nginx -s quit :完整有序的停止nginx

conf配置

以上都是废话,这里才是重点

先看我们自己配好的conf配置文件

#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;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;
	
	#静态页面
	server {
	
		listen	80;
		server_name	www.xxx.com;
		
		root     /usr/local/nginx/html/xxx;
					
		location = /50x.html {
			root	/usr/share/nginx/html;
		}

		location / {


		}
	}
	
	
	#负载均衡
	upstream hestia {
		server 127.0.0.1:8080;
		#server 127.0.0.2:8080 wight=3;
	}
	
	server {
	
		listen	80;
		server_name  localhost;

		error_page	500 502 503 504 /50x.html;
		location = /50x.html {
			root	/usr/share/nginx/html;
		}
		
		#静态资源
		location ~ \.(js|css|gif|jpg|png|bmp|swf)$ {
			expires 30d;
			root D:\apache-tomcat-9.0.7\webapps\hestia\WEB-INF\classes;
		
		}

		location / {
			
			proxy_set_header Host $host:80;
			proxy_set_header X-Real-IP $remote_addr;
			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
			proxy_pass http://hestia;
		}

	}
	
	
}

此时可以看出请求已经由nginx进行处理了,静态资源直接访问,动态资源转发到了tomcat

使用以上配置后访问localhost会被转发到localhost:8080
http模块下包含server模块,server模块下有location模块。

  • listen 表示当前的代理服务器监听的端口,默认的是监听80端口。
  • server_name 表示监听到之后需要转到哪里去,localhost表示转到本地
  • location 表示匹配的路径。/表示匹配所有,此处可以使用正则表达式匹配
  • root 表示要寻找的文件和资源的路径
  • index 表示默认主页,可以指定多个,按顺序查找。
  • deny和allow 是访问控制设置,禁止或允许某个IP或者某个IP段访问。也可以指定unix,允许socket的访问。

动静分离

在一个server中,我们可以设置静态文件直接访问到一个路径,而像jsp这样的动态文件可以交给tomcat处理。expires为过期时间。

#静态资源
	location ~ \.(js|css|gif|jpg|png|bmp|swf)$ {
		expires 30d;
		root D:\apache-tomcat-9.0.7\webapps\hestia\WEB-INF\classes\static;
	}
#动态资源
location ~ \.jsp$ {
		proxy_set_header Host $host:80;
		proxy_set_header X-Real-IP $remote_addr;
		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
		proxy_pass http://127.0.0.1:8080;
	}

重点:"proxy_pass http://127.0.0.1:8080" 此处会将匹配到的请求转发给tomcat处理

负载均衡

通过配置upstream,可以很轻松配置后台服务器的负载均衡:

#负载均衡
	upstream hestia {
		server 127.0.0.1:8080;
		#server 127.0.0.2:8080 wight=3;
	}
	
	server {
	
		listen	80;
		server_name  localhost;

		location / {
			proxy_set_header Host $host:80;
			proxy_set_header X-Real-IP $remote_addr;
			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
			proxy_pass http://hestia;
		}

	}

此处可以在server地址后面加个权重wight,默认为1,权重越大访问到的机会越大。

参考文章:https://segmentfault.com/a/1190000007803704
更多conf配置解读:https://lufficc.com/blog/configure-nginx-as-a-web-server