nginx相关配置

Nginx                         return
    1. 安装
  1. rpm安装
rpm –ivh nginx
#这样安装可能会产生软件依赖问题
  1. yum 安装
yum install nginx –y
#简单,高效。但是不能定制,而且软件的更新不是很及时。而且先要安装epel源.
yum install epel-release -y
  1. 编译安装
wget  + configure + make + make install
#可以定制软件,但是过程复杂,繁琐,效率低。
  1. 定制化制作rpm包,搭建yum仓库。
 
安装nginx前,必须先安装一个pcre库
yum 安装 : yum install pcre –y
                      yum install pcre-devel –y   #安装devel会自动安装pcre。
 
  • 源码安装
wget http://nginx.org/download/nginx-1.8.1.tar.gz     #下载安装包
tar –xf nginx-1.8.1.tar.gz                                                         #解压安装包
cd nginx-1.8.1                                                                            #进入目录
useradd nginx –s /sbin/nologin -M                                        #添加用户和默认组
./configure --user=nginx --group=nginx --prefix=/usr/local/nginx-1.8.1    #安装nginx,如果想加模块,后面还可以连接模块,例如  --with-http_ssl_module,--with-http_stub_status_module等。这2个模块分别为:ssl功能,状态信息。
安装完毕后,创建一个无版本号的软链接
ln –s /usr/local/naginx-1.8.1 /usr/local/naginx
 
②yum安装
yum install epel –y
yum install nginx –y
yum install zlib-devel -y
    1. 启动
  • 源码安装
/usr/local/nginx/sbin/nginx
  • yum 安装
service nginx start
启动后检查
netstat –ntulp | grep nginx
lsof –i :80
ps –ef | grep nginx
 
    1. 配置文件
  nginx的配置文件为: /usr/local/nginx/conf/nginx.conf
  主要是配置server里面的 
server {
        listen       80;                    #监听端口
        server_name  localhost;            #网站域名
        location / {
            root   html;                   #表示网站所放置的位置
            index  index.html index.htm;            #网站名
        }
        error_page   500 502 503 504  /50x.html;         #错误网站名
        location = /50x.html {
            root   html;
        }
 
 
    1. nginx模块

Nginx http 模块

Nginx http 功能模块

模块说明

 

 

ngx_http_core_module

包括一些核心的 http 参数配置,对应 Nginx 的配置为 HTTP 区块部分

ngx_http_access_module

访问控制模块,用来控制网站用户对 Nginx 的访问

ngx_http_gzip_module

压缩模块,对 Nginx 返回的数据压缩,属于性能优化模块

ngx_http_fastcgi_module

FastCGI 模块,和动态应用相关的模块,如 PHP

ngx_http_proxy_module

proxy 代理模块

ngx_http_upstream_module

负载均衡模块,可实现网站的负载均衡和节点的健康检查

ngx_http_rewrite_module

URL 地址重写模块

ngx_http_limit_conn_module

限制用户并发连接数以及请求数的模块

ngx_http_limit_req_module

根据定义的 key 限制 Nginx 请求过程的速率

ngx_http_log_module

访问日志模块,以指定的格式记录 Nginx 客户访问日志等信息

ngx_http_auth_basic_module

Web 认证模块,设置 Web 用户通过账号密码访问 Nginx

ngx_http_ssl_module

ssl 模块,用于加密的 http 连接,如 https

ngx_http_stub_status_module

记录 Nginx 基本访问状态信息等的模块

 
 
 
    1. 多虚拟主机配置
  1. 在nginx/conf文件夹中创建一个vhost文件夹
mkdir /usr/local/nginx/conf/vhost
  1. 备份/usr/local/nginx/conf/nginx.conf
cp /usr/local/nginx/conf/nginx.conf{,.backup}
  1. 修改nginx.conf文件
将文件中,server这一段删除,并添加
include vhost/www.conf
include vhost/bbs.conf
include vhost/blog.conf
或者 include vhost/*.conf
  1. 从nginx.conf.backup文件中截取上面删除的server配置段,并在vhost中创建配置文件。
sed –n ’84,93’p /usr/local/nginx/conf/nginx.conf.backup >host/www.conf
sed –n ’84,93’p /usr/local/nginx/conf/nginx.conf.backup >host/bbs.conf
sed –n ’84,93’p /usr/local/nginx/conf/nginx.conf.backup >host/blog.conf
  1. 去掉配置文件开头的#,编辑配置文件
vim host/www.conf       # server_name 设置为www.com,修改index.html为www.html
vim host/bbs.conf              # server_name 设置为bbs.com,修改index.html为bbs.html
vim host/blog.conf            # server_name 设置为blog.com,修改index.html为blog.html
  1. 创建测试网页文件并测试配置文件的正确性
echo “www”> /usr/local/nginx/html/www.html
echo “bbs”> /usr/local/nginx/html/bbs.html
echo “blog”> /usr/local/nginx/html/blog.html
/usr/local/nginx/sbin/nginx –t
 
  1. 查看nginx是否已经启动
ps –ef | grep nginx
lsof –i :80
如果没有启动,则:
/usr/local/nginx/sbin/nginx
如果已经启动,则:
/usr/local/nginx/sbin/nginx –s reload   #平滑重启
  1. 测试网站搭建是否正确
修改C:\Windows\System32\drivers\etc\hosts,在最后面添加域名重定向。比如:
        1. www.com
10.0.0.8       bbs.com
10.0.0.8       blog.com
  1. 在浏览器中输入https://www.com  https://bbs.com  https://blog.com
 
 
    1. 查看nginx运行状态
要查看状态,安装时必须安装ngx_http_stub_status_module 模块。
创建一个虚拟主机,并在主机中增加2
stub_status on;
access_log off';
可以追加访问控制
allow 10.0.0.2/24;
deny all;    #表示只运行这个IP来查看
 
    1. 日志切割
创建一个脚本
vim cut_accesslog.sh
然后在脚本里面写入
cd /usr/local/nginx/logs/
/bin/mv /usr/local/nginx/logs/access.log access_$(date +%F).log
/usr/local/nginx/sbin/nginx –s reload
然后全路径加入到定时任务crontab。
 
    1. location匹配
  1. 优先匹配=号
  2. 其次匹配^~
  3. 匹配正则表达式
  4. 匹配普通字符串
  5. 所有不能匹配到的,匹配到/上。
 
    1. rewrite 地址跳转
nginx通过ngx_http_rewrite_module模块支持url重写、支持if条件判断,但不支持else。另外该模块需要PCRE支持,应在编译nginx时指定PCRE支持。根据相关变量重定向和选择不同的配置,从一个location跳转到另一个location,不过这样的循环最多可以执行10次,超过后nginx将返回500错误。同时,重写模块包含set指令,来创建新的变量并设其值,这在有些情景下非常有用的,如记录条件标识、传递参数到其他location、记录做了什么等等

 

1

2

3

4

5

6

7

8

9

10

11

.     :匹配除换行符以外的任意字符

?     :重复0次或1

+     :重复1次或更多次

*     :重复0次或更多次

\d    :匹配数字

^     :匹配字符串的开始字符

$     :匹配字符串的结束字符

{n}   :重复n

{n,}  :重复n次或更多次

[c]   :匹配单个字符c

[a-z] :匹配a-z小写字母的任意一个

 
rewrite 中的小括号和sed中的一样,后面可以接$1,$2….
例子:如果以前的域名为bbs.com,后来更改了域名为blog.com,但是想要用bbs.com也能到新的域名上,就用rewrite。
在bbs.conf中去除网页的定义。增加一行
rewrite ^/(.*) http://blog.com;
 
 ngx_http_auth_basic_module认证模块
ngx_http_auth_basic_module模块实现让访问着,只有输入正确的用户密码才允许访问web内容
语法:     auth_basic_user_file file;

默认值:     —

配置段:     http, server, location, limit_except
在配置文件中增加ngx_http_auth_basic_module模块。添加2行即可
auth_basic "test";
        auth_basic_user_file /usr/local/nginx/conf/vhost/passwd;
然后到指定的目录创建密码文件,注:密码必须是加密的。
echo "xiao:$(openssl passwd -crypt 123456)" > /usr/local/nginx/conf/vhost/passwd
 
    1. 传递真实Client的IP地址
因为当nginx作为反向代理时,在后端的web服务器上的日志上记录的访问信息里,访问IP都是作为反向代理的nginx服务器的IP,而不能确定真实的客户IP。所以我们需要nginx将真正的客户端IP发送给后端的web服务器。
需要在location{ }里面添加一句:
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
 
2者的区别为

一般来说,X-Forwarded-For是用于记录代理信息的,每经过一级代理(匿名代理除外),代理服务器都会把这次请求的来源IP追加在X-Forwarded-For

来自4.4.4.4的一个请求,header包含这样一行

X-Forwarded-For: 1.1.1.1, 2.2.2.2, 3.3.3.3

代表 请求由1.1.1.1发出,经过三层代理,第一层是2.2.2.2,第二层是3.3.3.3,而本次请求的来源IP4.4.4.4是第三层代理

X-Real-IP,没有相关标准,上面的例子,如果配置了X-Read-IP,可能会有两种情况

// 最后一跳是正向代理,可能会保留真实客户端IP
X-Real-IP: 1.1.1.1
// 最后一跳是反向代理,比如Nginx,一般会是与之直接连接的客户端IP
X-Real-IP: 3.3.3.3
 
    1. 反向代理和负载均衡
nginx反向代理可以按照轮询(默认)、ip哈希(ip_hash)、URL哈希(url_hash)、权重(weight)等多种方式对后端服务器做负载均衡,同时还支持后端服务器的健康检查。
反向代理:

 location / {                    #因为是/,所以表示传递所有ULR

        proxy_pass        http://www.linuxidc.com;           #反向代理的域名,也可以是IP

        proxy_set_header   Host             $host;

        proxy_set_header   X-Real-IP        $remote_addr;     #传递真实客户IP

        proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for; #传递真实客户IP

    }

}

 
负载均衡:
需要定义在server之外

upstream backend {

    server 127.0.0.1:8080 ;

    server 127.0.0.1:9090 ;

    ip_hash;        }

 
upstream webservers {
        server 172.18.144.23:4789 weight=1;        #权重
        server 172.18.144.23:5789 weight=1;
                                }
如果需要负载均衡和反向代理一起配合使用,需要:
upstream webservers {
        server 172.18.144.23:4789 weight=1 max_fails=2 fail_timeout=2; #定义重试次数,超时时间
        server 172.18.144.23:5789 weight=1 max_fails=2 fail_timeout=2; #定义重试次数,超
时时间
            server 127.0.0.1:8080 backup     #定义sorrypages
                                }

location / {                 

        proxy_pass       webservers ; upstream的负载均衡服务器组传递过来

        proxy_set_header   Host             $host;

        proxy_set_header   X-Real-IP        $remote_addr;

        proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;

    }

}

 

server {                #当负载均衡的所有web serversdown掉了,这个就是定义sorrypage的。

   listen  8080;

   server_name  localhost;

   root  /web/errorpages;

   index  index.html;

        }

 
nginx的缓存   
数据一般都是存在磁盘上的,所以最好用ssd,并做RAID0.
nginx的Web缓存服务主要由proxy_cache相关命令集和fastcgi_cache相关命令集构成,前者用于反向代理时对后端内容源服务器进行缓存,后者主要用语对FastCGI的动态程序进行缓存。此外,也可以使用第三方模块ngx_slowfs_cache来实现缓存服务器配置。在server外定义:
proxy_cache_path /nginx/cache/first levels=1:2 keys_zone=first:20m max_size=1g;
定义缓存的目录,目录级别,每个缓存区大小,整个目录最大值
然后在location里面定义
proxy_cache first;        #如果定义为proxy_cache off为不启用缓存
 
 
 
    1. 开启nginx的目录列表功能(一般没用,只有做yum源才开启)
nginx.conf主配置文件中httplocation代码段中,配置一段代码即可实现
autoindex on;                 #自动显示目录
autoindex_exact_size off;      #默认为on,显示出文件的确切大小,单位是bytes
autoindex_localtime on;                       #默认为off,显示的文件时间为GMT时间。改为on后,显示的文件时间为文件的服务器时间
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值