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地址)
物理层