nginx的基本配置

一、基本简介

Nginx (engine x) 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。
其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。2011年6月1日,nginx 1.0.4发布。
Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。

优点
Nginx 可以在大多数 UnixLinux OS 上编译运行,并有 Windows 移植版。 Nginx 的1.4.0稳定版已经于2013年4月24日发布,一般情况下,对于新建站点,建议使用最新稳定版
Nginx 的源代码使用 2-clause BSD-like license。
Nginx 是一个很强大的高性能Web和反向代理服务器,它具有很多非常优越的特性:
在连接高并发的情况下,Nginx是Apache服务器不错的替代品:Nginx在美国是做虚拟主机生意的老板们经常选择的软件平台之一。能够支持高达 50,000 个并发连接数的响应,感谢Nginx为我们选择了 epoll and kqueue作为开发模型。

二、nginx的安装

  • 实验环境RedHat 6.5
    这里写图片描述

2.1 解压,并修改配置文件

[root@server1 ~]# tar zxf nginx-1.10.3.tar.gz 
[root@server1 ~]# cd nginx-1.10.3
[root@server1 nginx-1.10.3]# vim src/core/nginx.h  ##隐藏版本号,安全性
#define NGINX_VER          "nginx"    
[root@server1 nginx-1.10.3]# vim auto/cc/gcc   ##关闭gcc的debug调试模式,节省空间
# debug
#CFLAGS="$CFLAGS -g"

2.2 编译安装,设置nginx的目录及各种模块比如openssl加密等

[root@server1 ~]# yum install -y gcc pcre-devel openssl-devel  ##解决添加模块相应的依赖性
[root@server1 nginx-1.10.3]# ./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-threads --with-file-aio --with-http_stub_status_module
[root@server1 nginx-1.10.3]# make && make install 

2.3 做相应的前提准备

[root@server1 ~]# useradd -M -d /usr/local/nginx/ -s /sbin/nologin -u 800 nginx ##添加用户,并设置用户家目录
[root@server1 ~]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/  ##做软连接方便调用
[root@server1 ~]# nginx     ##启动nginx
[root@server1 ~]# nginx -t  ##检测nginx语法是否错误
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@server1 ~]# nginx -s reload  ##重新加载

这里写图片描述

三.nginx的多核绑定

[root@server1 ~]# vim /usr/local/nginx/conf/nginx.conf
user  nginx nginx;                ##nginx用户使用
worker_processes 2;               ##二核cpu,开启2个进程
worker_cpu_affinity 01 10;        ##01和10分别表示第一个CPU和第二个CPU(是用2进制进行计算的,比如三个001
....
events {
    worker_connections  65535;    ##连接数,65535为最大的进程数
}
[root@server1 ~]# vim /etc/security/limits.conf  ##最大连接数配置文件
nginx            -       nofile          65535

这里写图片描述
这里写图片描述

四、配置nginx证书加密

4.1配置文件

[root@server1 ~]# vim /usr/local/nginx/conf/nginx.conf ##下面就直接以配置文件代替这一行
  • 下面部分取消注释,将cert.key改为cert.pem

4.2 生成证书,pem为私钥,在此目录下查看Makefile可知pem包含证书与加密

  • 生成证书的详细步骤
[root@server1 ~]# cd /etc/pki/tls/certs
[root@server1 certs]# make cert.pem
.....
Country Name (2 letter code) [XX]:cn
State or Province Name (full name) []:shaaxi 
Locality Name (eg, city) [Default City]:xi'an
Organization Name (eg, company) [Default Company Ltd]:westos
Organizational Unit Name (eg, section) []:linux
Common Name (eg, your name or your server's hostname) []:server1
Email Address []:572025472@qq.com

这里写图片描述

  • 下面server模块部分取消注释,将cert.key改为cert.pem,如下图的黑色部分

这里写图片描述

4.3 移至/usr/local/nginx/conf目录下,重新加载nginx,使之生效

  • 注意如果配置了服务,就必须重新加载,检测语法可以快速定位错误,这俩步在下面以重新加载代替。
[root@server1 certs]# cp cert.pem /usr/local/nginx/conf/
[root@server1 certs]# nginx -t 
[root@server1 certs]# nginx -s reload
  • client 测试
  • 这里写图片描述
    这里写图片描述

五 定义多个不同域名站点的后端服务器

5.1 配置文件

[root@server1 conf]# vim /usr/local/nginx/conf/nginx.conf ##两个目录不同的域名
server {
                 listen 80;
                 server_name www.hello.org;
           location / {
                 root /www;
                 index index.html;
           }
     }
     server {
                 listen 80;
                 server_name bbs.hello.org;
           location / {
                 root /bbs;
                 index index.html;
           }
     }

这里写图片描述

5.2 创建默认发布目录,并编辑默认发布文件

[root@server1 conf]# mkdir /www /bbs
[root@server1 conf]# cd /www/
[root@server1 www]# vim index.html
[root@server1 www]# cat index.html 
<h1>www.hello.org</h1>
[root@server1 www]# cd /bbs/
[root@server1 bbs]# vim index.html
[root@server1 bbs]# cat index.html 
<h1>bbs.hello.org</h1
  • 重新加载,并在client测试
  • 每一个新出现的域名都需要在测试机做域名解析,下面这一步骤以”解析”代替
-bash-4.2# vim /etc/hosts
172.25.67.1 server1 www.hello.org bbs.hello.org
  • 测试

这里写图片描述
这里写图片描述

六 负载均衡 round-robin(轮询),轮询是nginx中默认的负载均衡模式

  • 配置文件
http {
     upstream hello{  ##两个后端web服务器
     server 172.25.67.2:80; 
     server 172.25.67.3:80;
    }
.....
}

.....
    server {
                 listen 80;
                 server_name www.hello.org;
                 location / {
                    #root /www;   ##将之前实验的默认发布目录部分注释掉
                    #index index.html;
                    proxy_pass http://hello
          }
     }
  • 重新加载并测试

这里写图片描述

七 iphash和权重

  • 配置文件

upstream hello {
     ip_hash; ##ip_hash模式会根据来源IP和后端配置来做hash分配,确保固定IP只访问一个后端。
     server 172.25.67.2:80;
     server 172.25.67.3:80;

     }
  • 重新加载测试

这里写图片描述

  • 配置文件
 upstream hello {
     #ip_hash;
     server 172.25.67.2:80;
     server 172.25.67.3:80 weight=2; weight为权重,若不设置则默认为1

     }
  • 重新加载测试

这里写图片描述

八 主备

  • 配置文件
 upstream hello {
     server 172.25.67.2:80;
     server 172.25.67.3:80;         
     server 172.25.67.1:8080 backup; ##当前两主机崩溃时由172.25.67.1接手
     }
  • 重新加载,测试主备(server2与server3关闭httpd服务,server1开启httpd服务,顶替测试

这里写图片描述

九 域名重定向

  • 注:配置完成后做好本地解析

9.1 输入hello.org重定向到bbs.hello.org

  • 配置文件
  server{
                 listen 80;
                 server_name hello.org;
                 rewrite ^(.*) //bbs.hello.org$1 permanent;
      }
  • 重新加载并测试

这里写图片描述

9.2 添加luntan.hello.org重定向到bbs.hello.org

server{
                 listen 80;
                 server_name hello.org luntan.hello.org;
                 rewrite ^(.*) http://bbs.hello.org$1 permanent;
      }
  • 和上一步测试一样

这里写图片描述

9.3 将bbs.hello.org重定向到https://bbs.hello.org

  • 配置文件
  server {
       listen       443 ssl;
       server_name  bbs;

       ssl_certificate      cert.pem;
       ssl_certificate_key  cert.pem;

       ssl_session_cache    shared:SSL:1m;
       ssl_session_timeout  5m;

       ssl_ciphers  HIGH:!aNULL:!MD5;
       ssl_prefer_server_ciphers  on;

       location / {
           root   /bbs;
           index  index.html index.htm;
     }
 }
....
       server {
                 listen 80;
                 server_name bbs.hello.org;
                 rewrite ^(.*) https://bbs.hello.org$1 permanent;
                 location / {
                    root /bbs;
                    index index.html;
           }
     }
  • 重新加载并测试

这里写图片描述

9.4 访问其他发布目录

  • 新建发布目录文件
[root@server1 conf]# mkdir /static/images -p
[root@server1 conf]# cd /static/images/
[root@server1 images]# ls
test.png
  • 配置文件
 server {
       listen       443 ssl;
       server_name  bbs.hello.org;

       ssl_certificate      cert.pem;
       ssl_certificate_key  cert.pem;

       ssl_session_cache    shared:SSL:1m;
       ssl_session_timeout  5m;

       ssl_ciphers  HIGH:!aNULL:!MD5;
       ssl_prefer_server_ciphers  on;

       location / {
           root   /bbs;
           index  index.html index.htm;
     }
       location /images {
           alias /static/images; ##location /images = bbs.hello.org/images alias后面是绝对路径
       }
     }

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值