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;
......多行代码......
}

浙公网安备 33010602011771号