Nginx 反向代理 静态服务器

Nginx 高性能Web服务器

简介

Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫开发的。
Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好。
中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。

选择Nginx的理由
  • 高并发连接 官方测试Nginx能够支持5万并发连接,在实际生产环境中可以支持2-4万并发连接
  • 消耗内存少 在同等硬件环境下, Nginx的处理能力相当于Apache的5-10倍。
  • 成本低廉 Nginx作为开源软件,可以免费使用,并且可用于商业用途。
  • 其他理由
  • 配置文件非常简单
  • 支持Rewrite重写规则
  • 内置健康检查规则
  • 节省带宽
  • 稳定性高

Nginx安装与配置

Nginx安装前准备
  • L

    • gcc编译器:用于官方源码编译, 依赖于gcc环境。
    • 依赖模块:Nginx的一些模块需要第三方库支持。
    • 下载地址: http://nginx.org/en/download.html
     yum -y install gcc gcc-c++ autoconf automake
     yum -y install zlib zlib-devel openssl openssl-devel pcre pcre-devel
     wget -0 /tmp/nginx.tar.gz http://nginx.org/download/nginx-1.16.1.tar.gz
    
Nginx编译安装
  • Nginx编译安装步骤:

    # 解压
    tar -zxvf /tmp/nginx.tar.gz
    cd /tmp/nginx-1.16.1/
    # 配置安装路径
    ./configure --prefix=/usr/local/nginx
    make
    make install
    
  • 添加环境变量

    vim /etc/profile
    

    在profile文件末尾添加如下配置:

    #设置Nginx的环境变量
    NGINX_HOME=/usr/local/nginx export
    PATH=$PATH:$NGINX_HOME/sbin

    开启Nginx服务:

    nginx
    

    关闭Nginx服务:

    nginx -s stop
    
  • 开启防火墙

    #查看开放的端口
    firewall-cmd --zone=public --list-port
    #永久添加80端口到防火墙
    firewall-cmd --zone=public --add-port=80/tcp --permanent
    #重新加载
    firewall-cmd --reload
    #重新加载配置文件
    nginx -s reload
    # 检测配置文件
    nginx -t
    
  • 添加系统服务
    在/usr/lib/systemd/system 下添加nginx.service,可以设置开机启动

    [Unit]
    Description=nginx - high performance web server
    After=network.target remote-fs.target nss-lookup.target
    
    [Service]
    Type=forking
    PIDFile=/usr/local/nginx/logs/nginx.pid
    ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
    ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
    ExecReload=/usr/local/nginx/sbin/nginx -s reload
    ExecStop=/usr/local/nginx/sbin/nginx -s stop
    ExecQuit=/usr/local/nginx/sbin/nginx -s quit
    PrivateTmp=true
    
    [Install]
    WantedBy=multi-user.target
    
    #重新加载systemctl daemon
    systemctl daemon-reload
    systemctl start nginx.service
    #设置开机启动
    systemctl enable nginx
    
Nginx配置与优化
  • 配置文件结构

  • 虚拟主机配置

  • 日志配置与切割

  • 压缩输出配置

  • #检测
    nginx -t
    #重新加载
    nginx -s reload
    

    默认配置文件位置: /usr/local/nginx/conf

    #使用的用户和组
    #user  nobody;
    
    #指定工作进程
    worker_processes  1;
    
    #指定错误日志存放路径
    #error_log  logs/error.log;
    #error_log  logs/error.log  notice;
    #error_log  logs/error.log  info;
    
    #指定nginx使用的pid
    #pid        logs/nginx.pid;
    
    #允许的最大连接数
    events {
        worker_connections  1024; 
    }
    
    #这个是协议级别
    http {
        #依据请求文件的后缀名在服务器的MIME配置文件中找到对应的MIME Type,再根据MIME Type设置HTTP Response的Content-Type,然后浏览器根据Content-Type的值处理文件。
        include       mime.types;
    	#默认处理程序
        default_type  application/octet-stream;
    	
        #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
        #                  '$status $body_bytes_sent "$http_referer" '
        #                  '"$http_user_agent" "$http_x_forwarded_for"';
    	#设置日志格式
        log_format mylogformat '$http_x_forwarded_for - $remote_user [$time_local]';
    	
        #access_log  logs/access.log  main;
        
        sendfile        on;
        #tcp_nopush     on;
        
        #keepalive_timeout  0;
        keepalive_timeout  65;
    	
        #gzip  on;
    	gzip on;
    	gzip_min_length 1k;
    	gzip_buffer 4 16k;
    	gzip_http_version 1.1;
    	gzip_comp_level 2;
    	gzip_types text/plain application/x-javascript text/css application/xml
    	
    	#这个是服务器级别
        server {
            #端口
            listen       80;
            #主机名/域名
            server_name  test.domain.com;
    
            #字符集
            charset utf-8;
    		# 使用设置的log格式
            access_log  logs/test.domain.access.log  mylogformat;
    
            #这个是请求级别 通过指定模式来与客户端请求的URI相匹配
            location / {
                root   html/test.domain.com;
                index  index.html index.htm;
            }
        }
    }
    

Nginx高级应用

  • Rewrite 重写
    • Rewrite主要功能就是实现URL重写
    • 通过Rewrite规则,可以实现规范的URL
      server{
      	location / {
      		rewrite ^(.*).htmp$ /rewrite.html
      	}
      }
      
  • 反向代理及负载均衡
    • 反向代理

      指以代理服务器来接收Internet上的连接请求,然后将请求转发给网络上的服务器,并将从服务器得到的结果返回给Internet上请求连接的客户端,此时代理服务器对外表现为一个服务器。

      http {
      	    include       mime.types;
      		#默认处理程序
      	    default_type  application/octet-stream;
      	    sendfile        on;
      	    keepalive_timeout  65;
              upstream myserver {
                   server www.baidu.com
              }
      		#这个是服务器级别
      	    server {
      	        #端口
      	        listen       80;
      	        #主机名/域名
      	        server_name  test.domain.com;
      	
      	        #字符集
      	        charset utf-8;
      			# 使用设置的log格式
      	        access_log  logs/test.domain.access.log  mylogformat;
      	
      	        #这个是请求级别 通过指定模式来与客户端请求的URI相匹配
      	        location / {
      	            #代理服务:当访问test.domain.com域名时,跳转到myserver指定的域名:www.baidu.com
      	            proxy_pass   http://myserver;
      	            index  index.html index.htm;
      	        }
      	    }
      	}
      
    • 负载均衡

      由多台服务器以对称的方式组成一个服务器集合,每台服务器都具有等价的地位,都可以单独对外提供服务而无需其他服务器的辅助。

      http {
      	    include       mime.types;
      		#默认处理程序
      	    default_type  application/octet-stream;
      	    sendfile        on;
      	    keepalive_timeout  65;
              upstream myserver1 {
                   server 192.168.1.1:8081;
              }
              upstream myserver2 {
                   server 192.168.1.1:8080;
              }
              #一个server对应多个ip,在访问时分别访问两个ip
             upstream myserver {
                   server 192.168.1.1:8080;
                   server 192.168.1.1:8081;
              }
      		#这个是服务器级别
      	    server {
      	        #端口
      	        listen       80;
      	        #主机名/域名
      	        server_name  test.domain.com;
      	
      	        #字符集
      	        charset utf-8;
      			# 使用设置的log格式
      	        access_log  logs/test.domain.access.log  mylogformat;
      	
      	        #这个是请求级别 通过指定模式来与客户端请求的URI相匹配
      	        location / {
      	            #使用负载服务
      	            proxy_pass   http://myserver ;
      	            index  index.html index.htm;
      	        }
      	    }
      	}
      

nginx 之 proxy_pass详解

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值