提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
前言
一、nginx是什么?
nginx常用来做负载负载均衡和反向代理服务器,同样可以作为文件服务器和做跨域配置
二、如何安装
nginx安装的时候不指定安装目录,会默认安装到/usr/local/nginx下,因此如果需要改变安装目录的同学,可以按照以下方法安装
1.安装依赖
yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel
2.下载安装文件
//下载
wget http://nginx.org/download/nginx-1.13.7.tar.gz
//解压
tar -xvf nginx-1.13.7.tar.gz
//官方网站
https://nginx.org/en/download.html
3.安装文件
//创建文件夹
mkdir /user/nginx
//进入到nginx解压目录
[root@bogon nginx-1.13.7]# cd nginx-1.13.7
//将nginx安装到指定文件夹下
[root@bogon nginx-1.13.7]# ./configure --prefix=/usr/local/nginx
[root@bogon nginx-1.13.7]# make
[root@bogon nginx-1.13.7]# make install
以上就是nginx的简单安装流程
三 配置文件
1.nginx作为文件服务器
1.文件目录配置
location / {
root /data/www;
}
//访问 ip:port 命中 /data/www下的文件 如ip:port/1.jpg -> /data/www/1.jpg
location 中有路径
location /images/ {
root /data/www;
}
//访问 ip:port/images 会命中 /data/www/images 如 ip:port/images/1.jpg -> /data/www/images/1.jpg
alias和root
上面配置为root配置,以下为alias配置
location /target {
alias /etc/nginx/html/static/;
}
//访问 ip:port/target - > 命中alias 如 ip:port/target/1.jpg -> /etc/nginx/html/static/1.jpg
nginx默认会选择最长前缀去匹配当前URL,所以路径中有相同的,会匹配最长的.
2.反向代理服务器
nginx接受前端发来的所有请求,并转发这些请求,可以配置转发规则,如 请求地址 url带有 user的可以转发到指定 ip:port
location /user {
proxy_pass http://ip:port;
}
//访问规则: server_name/user/query?id=1 ->转发 ip:port/user/query?id=1
//如果 是以下
location /user {
proxy_pass http://ip:port/user;
}
//访问规则: server_name/user/query?id=1 ->转发 ip:port/user/query?id=1
3.跨域配置
在 location 中添加如下配置
add_header 'Access-Control-Allow-Origin' $http_origin;
add_header 'Access-Control-Allow-Credentials' 'true';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
add_header 'Access-Control-Allow-Headers' 'DNT,web-token,app-token,Authorization,Accept,Origin,Keep-Alive,User-Agent,X-Mx-ReqToken,X-Data-Type,X-Auth-Token,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';
add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range';
if ($request_method = 'OPTIONS') {
add_header 'Access-Control-Max-Age' 1728000;
add_header 'Content-Type' 'text/plain; charset=utf-8';
add_header 'Content-Length' 0;
return 204;
}
4 负载均衡
在http模块添加 upstream。upstream支持5种分配方式
1.轮询(默认)
// upstream 后自定义名称,最好不是数字
upstream backend {
server 192.168.1.128:8081 ;
server 192.168.1.128:8082 ;
}
server {
listen 80;
server_name 0.0.0.0;
location / {
proxy_pass http://backend;
}
}
2.权重
weight和访问几率成正比,用于在不同性能的后端服务器分配上
upstream backend {
server 192.168.1.128:8081 weight=1;
server 192.168.1.128:8082 weight=2;
}
server {
listen 80;
server_name 0.0.0.0;
location / {
proxy_pass http://backend;
}
}
3.ip_hash
每个请求按照访问ip(即Nginx的前置服务器或者客户端IP)的hash结果分配,这样每个访客会固定访问一个后端服务器,可以解决session一致问题。
upstream backend {
ip_hash;
server 192.168.1.101:7777;
server 192.168.1.102:8888;
server 192.168.1.103:9999;
}
server {
listen 80;
server_name 0.0.0.0;
location / {
proxy_pass http://backend;
}
}
其他两种为fair响应时间分配请求,和url_hash根据url结果进行分配请求