资讯专栏INFORMATION COLUMN

【猿眼电影售票系统】Nginx配置文件详解

miqt / 1929人阅读

摘要:猿眼售票系统项目地址以下是我们项目的部署图可以从上图看到,其中后台有台静态文件服务器,台服务器,服务器储存电影和用户相关信息和服务器储存和短信验证码。本人负责服务器的反向代理配置,将请求分发至对应的服务器,并实现多台服务器的负载均衡。

MonkeyEye(猿眼售票系统)项目地址:
https://github.com/SYSUMonkeyEye/MonkeyEye-FE

以下是我们项目的部署图:

可以从上图看到,其中后台有4台静态文件(Web APP)服务器,2台API服务器,MySQL服务器(储存电影和用户相关信息)和Redis服务器(储存Session和短信验证码)。

本人负责Nginx服务器的反向代理配置,将请求分发至对应的服务器,并实现多台服务器的负载均衡。以下为Nginx的基本配置信息(详细解释请看对应注释):

user root;

# 工作进程:数目。根据硬件调整,通常等于CPU数量或者2倍于CPU。
worker_processes 4;

pid /run/nginx.pid;

events {
    # 每个工作进程的最大连接数量。根据硬件调整,和前面工作进程配合起来用。
    # 每个进程允许的最多连接数,理论上每台Nginx服务器的最大连接数为worker_processes * worker_connections。
    worker_connections 768;
}

http {

    ##
    # Basic Settings
    ##

    # 通过IP哈希的方式将请求分配至相应的服务器
    upstream static {
        ip_hash;
        server 118.89.35.155:8080 max_fails=3 fail_timeout=1000;
        server 127.0.0.1:5001 max_fails=3 fail_timeout=1000;
    }
  
    # 通过指定权重的方式将请求分配至相应的服务器
    upstream backend {
        server 127.0.0.1:5000 weight=2 max_fails=3 fail_timeout=1000;
        server 123.207.233.226:1234 weight=1 max_fails=3 fail_timeout=1000;
        server 119.29.238.202:5000 weight=1 max_fails=3 fail_timeout=1000;
        server 118.89.44.14:5000 weight=1 max_fails=3 fail_timeout=1000;
    }

    server {
        # 配置监听端口。
        listen 8080;
        
        # 配置访问域名。
        server_name localhost;
        
        # 查看Nginx服务器状态。
        location /nginx_status {
            stub_status on;
            access_log off;
            # 加入访问限制。
            allow 120.236.174.171;
            deny all;
        }
        
        # 配置静态文件(用户头像和电影海报)代理
        location ^~ /static/images {
            root /root/Desktop/MonkeyEye-Server/Flask-Server/app;
            expires max;
        }

        location ^~ /api/users {
            proxy_pass http://127.0.0.1:5000/api/users;

            proxy_set_header Host $host;
            proxy_set_header X-Real_IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

            # 传递HTTP头部Set-Cookie字段。
            proxy_pass_header Set-Cookie;

            # 禁止缓存。
            proxy_buffering off;
        }

        location ^~ /api/ {
            # 请求转向backend定义的服务器列表,即反向代理,对应upstream负载均衡器,也可以proxy_pass http://ip:port。
            proxy_pass http://backend/api/;

            proxy_set_header Host $host;
            proxy_set_header X-Real_IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

            proxy_pass_header Set-Cookie;

            proxy_buffering off;
        }

        location / {
            proxy_pass http://static;

            proxy_set_header Host $host;
            proxy_set_header X-Real_IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

            proxy_redirect off;
            # 缓冲区代理缓冲用户端请求的最大字节数。
            client_body_buffer_size 128k;
            # 设置代理服务器(Nginx)从后端服务器读取并保存用户头信息的缓冲区大小,默认与proxy_buffers大小相同,其实可以将这个指令值设的小一点。
            proxy_buffer_size 4k;
            # proxy_buffers缓冲区,Nginx针对单个连接缓存来自后端服务器的响应。
            proxy_buffers 4 128k;
            # 当 proxy_buffers 放不下后端服务器的响应内容时,会将一部分保存到硬盘的临时文件中,这个值用来设置最大临时文件大小,默认1024M,它与 proxy_cache 没有关系。大于这个值,将从upstream服务器传回。
            proxy_temp_file_write_size 256m;
        }
    }

    # 开启高效文件传输模式,sendfile指令指定nginx是否调用sendfile函数来输出文件,减少用户空间到内核空间的上下文切换。
    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    # 长连接超时时间,单位是秒。
    keepalive_timeout 65;
    types_hash_max_size 2048;

    include /etc/nginx/mime.types;
    default_type application/octet-stream;

    ##
    # Logging Settings
    ##
    # 日志存放路径。
    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;


    ##
    # Gzip Settings
    ##
    # 开启gzip压缩输出,减少网络传输。
    gzip on;
    gzip_disable "msie6";

    # gzip压缩比,1压缩比最小处理速度最快,9压缩比最大但处理速度最慢(传输快但比较消耗cpu)。
    gzip_comp_level 6;
    # 设置系统获取几个单位的缓存用于存储gzip的压缩结果数据流。
    gzip_buffers 16 8k;
    gzip_http_version 1.1;
    # 匹配mime类型进行压缩。
    gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript image/jpeg image/gif image/png image/jpg;
}

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/39555.html

相关文章

  • 猿眼电影售票系统Nginx反向代理配置

    摘要:常用的状态有,表示当前的暂时不参与负载均衡。当负载调度算法为时,后端服务器在负载均衡调度中的状态不能是和。 MonkeyEye(猿眼售票系统)项目地址:https://github.com/SYSUMonkeyEye/MonkeyEye-FE 反向代理概念 反向代理(Reverse Proxy)方式是指以代理服务器来接受客户端连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上...

    Soarkey 评论0 收藏0
  • iOS多线程:『pthread、NSThread』详尽总结

    摘要:两个窗口同时售卖火车票,卖完为止。如果在运行当前线程对象的时候线程任务执行完毕异常强制退出,则当前线程对象进入死亡状态。多线程详尽总结系列文章多线程详尽总结多线程详解总结多线程详解总结多线程详解总结 showImg(https://segmentfault.com/img/remote/1460000013011082?w=1276&h=796); 本文首发于我的个人博客:『不羁阁』 ...

    xiguadada 评论0 收藏0
  • macOS下nginx配合obs做推流直播.md

    摘要:参考博客,感谢作者设置用到的工具有开始教程安装下有这款很好的直播软件,可以丰富的采集外部设备,推流也比较稳定,并且,强力推荐。 这篇探索起源于给妹子看高清电影 动辄10G的1080P电影对于网速不够快又懒得找高清资源的妹子来说并不方便看 而pandaTV等直播平台显然是不可以直播电影的,于是我就按照google的方法自己推流1080P给妹子看电影,配合obs直播软件,非常简单就完成了设...

    wow_worktile 评论0 收藏0
  • macOS下nginx配合obs做推流直播.md

    摘要:参考博客,感谢作者设置用到的工具有开始教程安装下有这款很好的直播软件,可以丰富的采集外部设备,推流也比较稳定,并且,强力推荐。 这篇探索起源于给妹子看高清电影 动辄10G的1080P电影对于网速不够快又懒得找高清资源的妹子来说并不方便看 而pandaTV等直播平台显然是不可以直播电影的,于是我就按照google的方法自己推流1080P给妹子看电影,配合obs直播软件,非常简单就完成了设...

    NicolasHe 评论0 收藏0
  • 重庆市POI数据

    摘要:重庆市数据写在前面的话重庆市分类写在前面的话是的缩写,中文意思为兴趣点,广义的可以指任何你想要研究的一系列对象。 重庆市POI数据​​写在前面的话​​​​重庆市POI分类​​写在前面的话POI是Point of Interest的缩写,中文意思为兴趣点,广义的POI可以指任何你想要...

    Flands 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<