WebServer:Nginx基本配置

演示版本:nginx/1.10.3

  简略概要  

一、server块

server {
     # 监听端口 listen 80;
     # 此处可以配置多个域名,用空格隔开;或使用通配符,比如可匹配不同的域名后缀“com、cn、net…”等;另外此处貌似不配置也能测试通过,有待验证。 server_name www.szwxns.com; # server_name szwxns.com www.szwxns.com; # server_name szwxns.*;
     # 此处配置访问日志和错误日志,若要关闭日志功能,可将参数值设置为“off”。 access_log /var/log/nginx/access_szwxns.com.log; error_log /var/log/nginx/error_szwxns.com.log;

##
# 解决后端服务器获取客户端真实IP问题
##
# 方法一:需要修改后端获取IP的程序
proxy_set_header Host            $host;
        proxy_set_header X-Real-IP       $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# 方法二:不必修改后端获取IP的程序(待测试)
set $realip $remote_addr;
     # 网站入口 location / { proxy_pass http://www.szwxns.com; }

     # 静态文件入口,需要将WEB项目中的整个static目录放到此处配置的目录中;另外nginx指定文件路径有两种方式root和alias,关于区别可百度。
     location /static/ {
             root /var/www/szwxns.com;
       } }

 二、upstream块

#轮询算法(默认)
upstream www.szwxns.com { server 192.168.1.1:8080; server 192.168.1.2:8080;
server 192.168.1.3:8080; }
#加权轮询算法
upstream www.szwxns.com { server 192.168.1.1:8080 weight=2; server 192.168.1.2:8080 weight=5;
server 192.168.1.3:8080 weight=8; }
#IP哈希算法,使每个请求IP定向到同一个后端服务器,可解决会话共享问题
upstream www.szwxns.com { ip_hash;
server 192.168.1.1:8080; server 192.168.1.2:8080;
server 192.168.1.3:8080; }
#按后端服务器的响应时间来分配请求,响应时间短的优先分配
upstream www.szwxns.com { fair;
server 192.168.1.1:8080; server 192.168.1.2:8080;
server 192.168.1.3:8080; }
#URL哈希算法,使每个url定向到同一个后端服务器
upstream www.szwxns.com { hash $request_uri; hash_method crc32;
server 192.168.1.1:8080; server 192.168.1.2:8080;
server 192.168.1.3:8080; }

后端服务器常用的状态设置参数:
1、down:表示此服务器已down掉,暂时不能参与负载。
2、weight:表示权重,默认值是1。
3、max_fails:即允许请求失败的次数,默认值为1,当超过最大次数时,返回proxy_next_upstream模块定义的错误。
4、fail_timeout:max_fails次失败后,暂停的时间。
5、backup:即备份服务器,当其它所有的非backup机器down掉或超忙的时候,请求backup机器。

# 服务器状态设置示例
upstream www.szwxns.com { server 192.168.1.1:8080 down; server 192.168.1.2:8080 weight=100;
server 192.168.1.3:8080 weight=100 max_fails=3; server 192.168.1.4:8080; server 192.168.1.5:8080 backup; }

三、server + upstream

server {
	listen 80;

	server_name szwxns.com www.szwxns.com;

	access_log /var/log/nginx/access_szwxns.com.log;
	error_log /var/log/nginx/error_szwxns.com.log;

	location / {
		proxy_pass http://www.szwxns.com;
	}

	location /static/ {
		root /var/www/szwxns.com;
	}
}
upstream www.szwxns.com {
	server 192.168.1.1:8080;
	server 192.168.1.2:8080 weight=5;
	server 192.168.1.3:8080 weight=8;
        server 192.168.1.4:8080 backup;
}

   附  

一、启用GZIP

1、gzip是一种压缩技术,全称是GNU-ZIP。经过gzip压缩后的文件可以是原文件大小的30%甚至更小,大大减轻了传输过程中的宽带占用,提高了客户端访问速度。gzip压缩需要服务器和浏览器双方都支持才行,服务器将压缩后的文件传给客户端浏览器,浏览器解压后使用。而且目前几乎所有浏览器都支持gzip技术。

2、示例:

http {

	##
	# Basic Settings
	##

	sendfile on;
	
	include /etc/nginx/mime.types;
	default_type application/octet-stream;

	##
	# Gzip Settings
	##

	gzip on;
	gzip_disable "msie6";
	gzip_vary on;
	gzip_proxied any;
	gzip_comp_level 6;
	gzip_buffers 16 8k;
	gzip_http_version 1.1;
	gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

	##
	# Virtual Host Configs
	##

	include /etc/nginx/conf.d/*.conf;
	include /etc/nginx/sites-enabled/*;
}

 二、解决上传文件大小限制

http {

       ......多行代码......

	##
	# 设置上传文件大小限制,默认是1M
	##

	client_max_body_size 300M;

        ......多行代码......
}

 三、解决跨域

1、跨域是浏览器的一种安全机制,使用JavaScript获取远程数据时,如果远程站点和本站点的协议、IP、端口只要有任何一个不同则会发生跨域问题。

2、示例:

http {

       ......多行代码......

        ##
  	# Cross Domain Settings
        # 第一个设置是最重要的
	##

        # 允许任何域名跨域
	add_header Access-Control-Allow-Origin *;
        # 允许指定域名跨域
	add_header Access-Control-Allow-Origin http://192.168.1.4:9090;
	add_header Access-Control-Allow-Origin http://www.szwxns.com;
        # ajax异步请求
  	add_header Access-Control-Allow-Headers X-Requested-With;
        # 指定允许跨域方法
 	add_header Access-Control-Allow-Methods GET,POST,OPTIONS;

        ......多行代码......
}

 

posted @ 2018-01-10 12:50  cuckoo20100401  阅读(445)  评论(0)    收藏  举报