Nginx常用配置

 

一.配置文件结构。

// 主模块/全局配置
main {
    user    nginx_user // 运行nginx的用户
    worker_processes 2 // 根据实际情况进行调整,通常数量是CPU内核数量的整数倍
    error_log  /usr/local/bin/nginx/logs/error.log // 定义错误日志文件的位置及输出级别【debug / info / notice / warn / error / crit】
    worker_rlimit_nofile 65535
}

// 事件模块/工作模式配置
events {
    worker_connections 1000
    multi_accept 100
    use epoll 
}

// HTTP模块
http {
    
    // 虚拟主机配置
    server {
        listen [ip]:[port] // 本机IP加端口
        server_name [domain_name] // 域名
        
        // 路由、虚拟目录配置, 这里的path可以写正则
        location path { // 实现静态资源服务器
            root localpath; 
            index index.html;
        }
        
        // 多个路由、虚拟目录配置 -- 实现反向代理
        location path {
            pass_proxy http://xxx.com; 
            proxy_set_header X-real-ip $remote_addr;
            proxy_set_header Host $http_host;
        }
        
        // 多个路由、虚拟目录配置 -- 实现反向代理到upstream
        location path {
            pass_proxy backend; 
            proxy_set_header X-real-ip $remote_addr;
            proxy_set_header Host $http_host;
        }
    }
    
    // 可配置多个虚拟主机
    server {
        
    }
    
    // 配置负载均衡
    upstream backend{
        ip_hash;
        server 192.168.1.100:8000 weight=9;
        server 192.168.1.100:8001 down;
        server 192.168.1.100:8002 max_fails=3;
        server 192.168.1.100:8003 fail_timeout=20s;
        server 192.168.1.100:8004 max_fails=3 fail_timeout=20s;
    }
}

由上可见,可以Nginx的配置文件结构由三大模块组成, 分别是main、events、http。其中http模块下又由server、upstream组成, 分别实现虚拟主机和负载均衡的配置。server下又有多个location配置是路由、虚拟目录的配置, 可以实现静态资源服务器, 反向代理。

 

完整的Nginx配置参数建议参考官方文档: http://www.nginx.cn

二、配置虚拟主机

server {
    listen [ip]:[port] // 本机IP加端口
    server_name [domain_name] // 域名
    
    location path {
        
    }
}

listen: 设定监听的IP以及端口

server_name: 监听的域名

location:配置匹配路径转发的静态资源或upstream,匹配路径支持普通字符串,通配符、正则表达式

根据上面的伪代码,通过使用不用的IP、端口、域名即可配置出多个不同的虚拟主机。

 

三、配置静态资源服务器

配置好虚拟主机后, 可以通过配置location配置路由, 路由到静态资源的位置, 这样就实现静态资源服务器的搭建了, 伪代码如下:

location / {
    root  /opt/program/web;
    index index.htm index.html;
}

root: 静态资源的路径

index: 当被访问的资源不存在时跳转的文件名

 

四、配置反向代理 

配置好虚拟主机后, 可以通过配置location配置路由, 然后针对路由反向代理到后端服务, 这样就实现反向代理了。 伪代码如下:

location / {
    pass_proxy http://www.baidu.com; 
    proxy_set_header Host $host:$proxy_port;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-Host $host;
    proxy_set_header X-Forwarded-Server $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

pass_proxy: 反向代理的后端服务地址

proxy_set_header: 设置请求头,如把真实的IP地址加到 X-real-ip 请求头上,主要是为了反向代理之后,不丢失真实的主机、端口

 

五、配置负载均衡

配置负载均衡要先配置好upstream, 再虚拟主机, 然后通过location配置路由,针对路由反向代理到upstream的名称即可实现负载均衡, 伪代码如下:

// 虚拟主机配置
server {
    listen [ip]:[port] // 本机IP加端口
    server_name [domain_name] // 域名
    
    location / {
        pass_proxy backend; /// 实现反向代理到upstream,以实现负载均衡
        proxy_set_header Host $host:$proxy_port;
        proxy_set_header X-Real-IP $remote_addr;
       proxy_set_header X-Forwarded-Host $host;
       proxy_set_header X-Forwarded-Server $host;
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

// 配置负载均衡
upstream backend{
    ip_hash;
    server 192.168.1.100:8000 weight=9;
    server 192.168.1.100:8001 down;
    server 192.168.1.100:8002 max_fails=3;
    server 192.168.1.100:8003 fail_timeout=20s;
    server 192.168.1.100:8004 max_fails=3 fail_timeout=20s;
}

主要讲解一下upstream的配置:

  • ip_hash:指定请求调度算法,默认是weight权重轮询调度,可以指定
  • server host:port:分发服务器的列表配置
  • down:表示该主机暂停服务
  • max_fails:表示失败最大次数,超过失败最大次数暂停服务
  • fail_timeout:表示如果请求受理失败,暂停指定的时间之后重新发起请求

六、配置SSL

server{
    #监听443端口
    listen 443;
    #对应的域名,把domainname改成你们自己的域名就可以了
    server_name domainname;
    ssl on;
    #配置证书密钥文件路径
    ssl_certificate /etc/ssl/346534.perm;
    #配置证书密钥文件路径
    ssl_certificate_key /etc/ssl/37457.key;
    ssl_session_timeout 5m;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
    ssl_prefer_server_ciphers on;
    
    #配置路由
    location / {
            
    }
}

// 加上一个虚拟主机, 让访问非https的情况下强制重写到https
server{
    listen 80;
    server_name domainname;
    rewrite ^/(.*)$ https://domainname:443/$1 permanent;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值