Nginx

本文介绍Nginx的安装配置步骤,包括依赖库安装、配置文件详解,并讲解Nginx作为静态HTTP服务器、反向代理服务器、负载均衡器及虚拟主机的功能实现。此外还介绍了如何使用rewrite进行URL重写。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、Nginx安装配置
  1、下载 nginx  pcre
    1)准备 pcre-8.12.tar.gz。该文件为正则表达式库。让nginx支持rewrite需要安装这个库。
    2) 准备 nginx-1.5.0.tar.gz。
    3)确保进行了安装了linux常用必备支持库。
 2、安装yum install gcc-c++
 3、上传pcre-8.12.tar.gz, nginx-1.5.0.tar.gz 到 /usr/local/src/nginx目录下。
 4、安装pcre:tar zxvf pcre-8.12.tar.gz;./configure;make;make install;
 5、安装Nginx:tar zxvf nginx-1.5.0.tar.gz;./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_realip_module;make;make install;
 6 、启动停止重启与测试:./nginx;nginx -s stop
 7、配置:修改/nginx/conf/nginx.conf       #编辑配置文件 
    Nginx的配置文件主要由5个部分组成:
       1)main:用于进行nginx全局信息的配置,如worker_processes子进程数
       2)events:用于nginx工作模式的配置
       event {
            worker_connections 1024;#最大可以同时接收的连接数量
            multi_accept on;
            use epoll;#指定了线程轮询的方法
        }
        3)http:用于进行http协议信息的一些配置
        4)server:用于进行服务器访问信息的配置
        server{
            #监听端口
            listen 80;
            #域名可以有多个,用空格隔开
            server_name www.linuxidc.com ha97.com;
            #图片缓存时间设置
            location ~ .*.(gif|jpg|jpeg|png|bmp|swf)$
            {
                expires 10d;
            }
            #日志格式设定
            log_format access '$remote_addr - $remote_user [$time_local] "$request" '
            '$status $body_bytes_sent "$http_referer" '
            '"$http_user_agent" $http_x_forwarded_for';
            #定义本虚拟主机的访问日志
            access_log ar/loginx/linuxidcaccess.log access;
            #对 "/" 启用反向代理
            location / {
                proxy_pass http://127.0.0.1:88;
                proxy_redirect off;
                proxy_set_header X-Real-IP $remote_addr;
                #后端的Web服务器可以通过X-Forwarded-For获取用户真实IP
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                #以下是一些反向代理的配置,可选。
                proxy_set_header Host $host;
                client_max_body_size 10m; #允许客户端请求的最大单文件字节数
                client_body_buffer_size 128k; #缓冲区代理缓冲用户端请求的最大字节数,
                proxy_connect_timeout 90; #nginx跟后端服务器连接超时时间(代理连接超时)
                proxy_send_timeout 90; #后端服务器数据回传时间(代理发送超时)
                proxy_read_timeout 90; #连接成功后,后端服务器响应时间(代理接收超时)
                proxy_buffer_size 4k; #设置代理服务器(nginx)保存用户头信息的缓冲区大小
                proxy_buffers 4 32k; #proxy_buffers缓冲区,网页平均在32k以下的设置
                proxy_busy_buffers_size 64k; #高负荷下缓冲大小(proxy_buffers*2)
                proxy_temp_file_write_size 64k;
                #设定缓存文件夹大小,大于这个值,将从upstream服务器传
            }
            #本地动静分离反向代理配置
            #所有jsp的页面均交由tomcat或resin处理
            location ~ .(jsp|jspx|do)?$ {
                root    /nginx/www;
                index    index.php index.html index.htm;
            }
        }
        5)upstream:用于进行负载均衡的配置 
        upstream name {
            ip_hash;
            server 192.168.1.100:8000;
            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;
        }
        ip_hash:指定请求调度算法,默认是weight权重轮询调度,解决了集群部署环境下session共享的问题。
        -- down:表示该主机暂停服务
        - - max_fails:表示失败最大次数,超过失败最大次数暂停服务
        -- fail_timeout:表示如果请求受理失败,暂停指定的时间之后重新发起请求

二、Nginx功能

    Nginx基本功能:静态HTTP服务器、虚拟主机、反向代理服务器、负载均衡

1、静态HTTP服务器()

首先,Nginx是一个HTTP服务器,可以将服务器上的静态文件(如HTML、图片)通过HTTP协议展现给客户端。

配置:

  1. server {  
  2.     listen80; # 端口号  
  3.     location / {  
  4.         root /usr/share/nginx/html; # 静态文件路径  
  5.     }  
  6. }  

2、反向代理服务器

什么是反向代理?

客户端请求Nginx,Nginx请求应用服务器,然后将结果返回给客户端。可以通过配置多个server多个location实现。

配置:

        server {  
            listen80;  
                server_name  域名1;
            location / {  
                proxy_pass http://192.168.20.1:8080; # 应用服务器HTTP地址  
            }  
        } 
        server {  
            listen80;  
                server_name  域名2;
            location / {  
                proxy_pass http://192.168.20.1:8081; # 应用服务器HTTP地址  
            }  
        }   

3、负载均衡

当网站访问量非常大,网站站长开心赚钱的同时,也摊上事儿了。因为网站越来越慢,一台服务器已经不够用了。于是将同一个应用部署在多台服务器上,将大量用户的请求分配给多台机器处理。同时带来的好处是,其中一台服务器万一挂了,只要还有其他服务器正常运行,就不会影响用户使用。Nginx可以通过反向代理来实现负载均衡。

配置 

  1. upstream myapp {  
  2.     ip_hash; # 根据客户端IP地址Hash值将请求分配给固定的一个服务器处理 
  3.     server192.168.20.1:8080weight=3; # 该服务器处理3/4请求  
    1.     server192.168.20.2:8080; # weight默认为1,该服务器处理1/4请求 
  4.  
  5. }  
  6. server {  
  7.     listen80;  
  8.     location / {  
  9.         proxy_pass http://myapp;  
  10.     }  
  11. }  

 

注意proxy_pass后面的http://。

4、虚拟主机

 

有的网站访问量大,需要负载均衡。然而并不是所有网站都如此出色,有的网站,由于访问量太小,需要节省成本,将多个网站部署在同一台服务器上。例如将www.aaa.com和www.bbb.com两个网站部署在同一台服务器上,两个域名解析到同一个IP地址,但是用户通过两个域名却可以打开两个完全不同的网站,互相不影响,就像访问两个服务器一样,所以叫两个虚拟主机。

配置:

  1. server {  
  2.     listen80default_server;  
  3.     server_name _;  
  4.     return444; # 过滤其他域名的请求,返回444状态码  
  5. }  
  6. server {  
  7.     listen80;  
  8.     server_name www.aaa.com; # www.aaa.com域名  
  9.     location / {  
  10.         proxy_pass http://localhost:8080; # 对应端口号8080  
  11.     }  
  12. }  
  13. server {  
  14.     listen80;  
  15.     server_name www.bbb.com; # www.bbb.com域名  
  16.     location / {  
  17.         proxy_pass http://localhost:8081; # 对应端口号8081  
  18.     }  
  19. }  

在服务器8080和8081分别开了一个应用,客户端通过不同的域名访问,根据server_name可以反向代理到对应的应用服务器。

虚拟主机的原理是通过HTTP请求头中的Host是否匹配server_name来实现的,有兴趣的同学可以研究一下HTTP协议。

另外,server_name配置还可以过滤有人恶意将某些域名指向你的主机服务器。

三、Nginx配置rewrite

1、应用场景

1、可以调整用户浏览的URL,看起来更规范,合乎开发及产品人员的需求。

2、为了让搜索引擎搜录网站内容及用户体验更好,企业会将动态URL地址伪装成静态地址提供服务。

3、网址换新域名后,让旧的访问跳转到新的域名上。例如,访问京东的360buy.com会跳转到jd.com

4、根据特殊变量、目录、客户端的信息进行URL调整等

2、实现

server {

        listen 80;

        server_name abc.com;

        rewrite ^/(.*) http://www.abc.com/$1 permanent;

server {

        listen 80;

        server_name www.abc.com;

        location / {

                root /data/www/www;

                index index.html index.htm;

        }

        error_log    logs/error_www.abc.com.log error;

        access_log    logs/access_www.abc.com.log    main;

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值