Nginx

Ubuntu版本:ubuntu-16.04.6-server-amd64
运行环境是VMWARE FUSION 16

主要分享一下Nginx环境的搭建,以及对静态资源、动态资源的申请(cgi common gateway interface公共网关接口,对外提供输入输出流,例如OA等在线编程),以及如何通过nginx做负载均衡服务器

cd nginx-1.13.7
  ./configure\
   --prefix=/usr/local/nginx \
   --with-http_realip_module \
   --with-http_addition_module \
   --with-http_gzip_static_module \
   --with-http_secure_link_module \
   --with-http_stub_status_module \
   --with-stream \
   --with-pcre=/home/zhangzhilong/share/nginx/pcre-8.41 \
   --with-zlib=/home/zhangzhilong/share/nginx/zlib-1.2.11 \
   --with-openssl=/home/zhangzhilong/share/nginx/openssl-1.1.0g \
  >>./install.info

sudo make -j4 >> ./install.info

sudo make install >> ./install.info

下面贴出简单的Nginx配置文件:

worker_processes 4;

events{
        worker_connections 1024;
}

http{
        upstream backend{
                #代理了两台服务器,用来均衡负载,此处写入的是转发的目的服务器
                #server 192.168.198.128:8888 weight=1;
                server 192.168.198.130 weight=1;
                server 192.168.198.132 weight=1;
        }
        server{
                listen 8888;
                server_name localhost;
                client_max_body_size 100m;
                location / {
                        root  /etc/nginx/html/;
                        #proxy_pass http://192.168.198.129;
                        proxy_pass http://backend;          # 配置转发的方向,⚠️注意不能自己转发给自己
                }
                location /images/ {
                        root  /home/zhangzhilong/share/;
                }
                location ~\.(mp3|mp4){
                        root /home/zhangzhilong/share/media/;
                }
        }
        server {
                listen 9001;

                location ~ \.cgi {
                        fastcgi_pass 127.0.0.1:9002;            # 对于cgi请求,转发给cgi守护进程
                        fastcgi_index index.cgi;
                        fastcgi_param SCRIPT_FILENAME cgi$fastcgi_script_name;
                        include ../conf/fastcgi_params;
                }
        }
}

这里用到两个小工具:spawn_fcgi和fcgi

#include <stdio.h>
#include <fcgi_stdio.h>

int main(){
        while(FCGI_Accept() >=0){
                printf("Content-type: text/html\r\n");
                printf("\r\n");
                printf("<title> Fast Cgi HEllo! </title>");
                printf("<h1> ZVoice cgi </h1>");
                printf("Thank you cgi \n");
        }
        return 0;
}
gcc zvoice_cgi.c  -o zvoice_cgi -lfcgi  #不知为何使用动态库连接的时候编译失败,退而求次使用静态编译
gcc zvoice_cgi.c  -o zvoice_cgi /usr/local/lib/libfcgi.a
#配合spawn-cgi使用fcgi
spawn-fcgi  -a 127.0.0.1  -p 9002  -f   /usr/local/nginx/cig/voice_cgi

启动Nginx
root: nginx -s stop
root: nginx -c /usr/local/conf/nginx.conf

最后附一张我的虚拟机初始配置脚本:
https://github.com/ZHANG-Zhilong/conf

最后的最后:
第七层:应用层 定义了用于在网络中进行通信和数据传输的接口 - 用户程式;提供标准服务,比如虚拟终端、文件以及任务的传输 和处理;
  第六层:表示层 掩盖不同系统间的数据格式的不同性; 指定独立结构的数据传输格式; 数据的编码和解码;加密和解密;压缩和 解压缩
  第五层:会话层 管理用户会话和对话; 控制用户间逻辑连接的建立和挂断;报告上一层发生的错误
  第四层:传输层 管理网络中端到端的信息传送; 通过错误纠正和流控制机制提供可靠且有序的数据包传送; 提供面向无连接的数 据包的传送;
  第三层:网络层 定义网络设备间如何传输数据; 根据唯一的网络设备地址路由数据包;提供流和拥塞控制以防止网络资源的损耗
  第二层:数据链路层 定义操作通信连接的程序; 封装数据包为数据帧; 监测和纠正数据包传输错误
  第一层:物理层 定义通过网络设备发送数据的物理方式; 作为网络媒介和设备间的接口;定义光学、电气以及机械特性。

应用层--Nginx (http协议)
传输层-- haproxy (TCP UDP)
网络层--lvs代理IP地址
数据链路层--F5(局域网Mac地址)
物理层

posted @ 2020-07-12 20:27  阿龙233  阅读(180)  评论(0编辑  收藏  举报