• 西雅图搬砖狗
    2018-11-07
    老师你会讲一下nginx的event loop机制么?就是nginx的upstream和sub request module都基于的底层的event loop机制。在你的书里第二大部分详细介绍了这个。但是如果能够在课程中再过一遍就更好了

    作者回复: 会讲的,第2部分就会讲到event loop机制

    
     6
  • 西奥叔叔
    2018-12-18
    老师您好,缓存功能只能使用于静态资源服务吗?我配置的反向代理到web应用,生成了nginxcache这个目录,但是目录里面没有任何东西。

    作者回复: 缓存只用于反向代理。必须上游响应符合缓存条件才会存储到该目录。第四部分有3节课会深入这块

    
     3
  • victor
    2018-11-16
    老师您好,我在使用nginx做负载均衡时,实测的结果显示,大于一台服务的处理请求小于单台的处理能力,nginx为1.14.0版本,upstream里逐步打开多台后台服务,比如开启一台,两台,三台或者四台,测试数据都没有一台的好。后台服务使用Python Django开发的。用goaccess去监控access log,明显发现多台服务接收和处理请求比较慢。nginx配置只是增加了upstream。请问这个性能降低是否跟nginx配置有关?如何提高性能?谢谢!

    作者回复: 性能问题先要确定瓶颈在哪,通常我习惯用二分法,逐渐缩小问题范围。增加多台服务性能反而变慢,我建议你先确定这四台django本身运行时会不会变慢,并看一下nginx的error.log中有没有错误日志,同时把error.log里的日志级别降低一点,例如info。

    
     3
  • Tired
    2019-01-11
    老师你好,我们使用stream对tcp请求做代理,但是有个问题就是应用端拿不到客户端的真实IP,获取出来的IP是代理服务器的IP,请问有什么方法可以获取到客户端请求的真实IP吗?

    作者回复: 两个方案,1、使用proxy_protocol协议,nginx作为客户端或者服务器时都支持该协议。第113课有详细介绍。
    2、使用IP透传DSR方案,需要修改上游服务的路由表,这节课在第4部分最后一节课,大概春节前会上线,你可以关注下。

    
     2
  • 003900107
    2018-11-21
    请问在做反向代理的时候,如果想启用gzip压缩,是应该在反向代理上做,还是web服务器上的nginx上配置?

    作者回复: 我猜测你的环境是nginx->nginx,前者是负载均衡的作用,后者是静态资源的作用?如果是这样,建议后者。

    
     2
  • max
    2018-11-12
    我找不到Openresty配置目录,不仅要安装nginx还要安装Openresty是吗

    作者回复: openresty里含有nginx,你安装好openresty后,如果你没有改prefix,那么nginx.conf就会在/usr/local/openresty/nginx/conf目录下。

    
     2
  • Hurt
    2019-10-23
    老师 没有看到启动openresty呢

    作者回复: Openresty启动后进程名还是Nginx,它只是把Lua代码以Nginx模块的方式嵌入到Nginx进程中了

    
     1
  • 清须须
    2019-09-16
    proxy_cache_path /tmp/nginxcache levels=1:2 keys_zone=my_cache:10m max_size=10g inactive=60m;

        server {
            listen 80;
            server_name study_nginx.com;

            location / {
                    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_cache my_cache;
                    proxy_cache_key $host$uri$is_args$args;
                    proxy_cache_valid 200 304 302 1d;

                    proxy_pass http://local;
            }
        }

    我这样配置了,nginx服务器关闭后,就无法访问了。缓存没访问成功
    展开

    作者回复: /tmp/nginxcache下的缓存文件是否生成?

    
     1
  • Wendy
    2018-11-29
    陶辉老师你好,生产环境如何判断是该使用nginx呢?还是openresty呢?

    作者回复: 如果不需要使用openresty提供的独有功能,那么尽量使用更稳定更轻量的nginx

    
     1
  • 金蝉花
    2018-11-11
    Nginx现在可以做http请求正向代理,那么对于HTTPS请求的正向代理应该如何实现的思路,是否可以讲解一下思路?

    作者回复: 很好的问题,考虑在第四部分内容加一节课讲正向代理!

    
     1
  • mm33333
    2020-02-03
    请问老师,我如果用一台Linux机器,装一个nginx服务器,然后设置不同的vhost监听不同的端口,比如说上游监听80端口,代理监听8080端口,这样能实现反向代理么?

    作者回复: 可以

    
    
  • 老叔叔安森
    2020-01-06
    老师,设置反向代理之后,不管请求代理还是直接上游服务器,上游服务器日志就不会再继续记录了吗?

    作者回复: 你是说access.log日志吗?只要请求进入Nginx,就可以记录access.log日志。access日志的功能在课程中比较分散,它涉及到的知识点比较多。第20课对何时记录access日志有说明。

    
    
  • 陈景军
    2019-11-30
    老师请教一个方向代理一个问题:访问 / 或者 /index 直接返回,否者转发upstream处理。
    这个应该怎么配置呢?

    作者回复: 你想知道的是应该是如何配置location,分为两类,我猜你遇到的问题是/会匹配所有的url。
    建议你先从头看一遍54课。你的场景不需要正则表达式,那么只是前缀匹配。你要注意,前缀匹配需要关注出现在nginx.conf中的顺序。

    
    
  • 王善鹏
    2019-11-25
    老师,http://local是什么意思,我认识localhost,能说下区别吗,另外上游的端口号是8080,使用local可以不指定端口号吗

    作者回复: 1、localhost只是名称,如果你在/etc/hosts里添加了127.0.0.1 local,那么也能访问local。
    2、当不指定端口号时,http client会默认使用80端口。

    
    
  • Hurt
    2019-10-24
    老师。是要同时启动nginx和openresty的吧

    作者回复: openresty就是nginx哦,强烈建议你先看下144课

    
    
  • Hurt
    2019-10-24
    老师 我的意思是没有看到启动openresty 只是看到配置配置文件了 那是如何做代理的呢

    作者回复: 没有找到sbin目录?sbin目录下有nginx文件,直接执行./nginx就可以启动了

    
    
  • Hurt
    2019-10-23
    老师 nginx和openresty都用同样一个端口吗

    作者回复: Openresty也是Nginx,只不过它增加了几个Nginx模块,特别是http模块。所以,包括配置文件、端口都是一样的,你可以先跳到144课总体上看下区别

    
    
  • 不能如期而至
    2019-08-26
    老师,我按照您的配置,开启nginx上游服务后能正常访问,关闭就访问不到。
    openresty中配置如下:
    http {
        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"';

        #access_log logs/access.log main;
        client_max_body_size 60M;
        proxy_cache_path /temp/nginxcache levels=1:2 keys_zone=my_cache:10m max_size=2g inactive=60m use_temp_path=off;

        sendfile on;
        #tcp_nopush on;

        #keepalive_timeout 0;
        keepalive_timeout 65;

        #gzip on;

        upstream local {
            server 127.0.0.1:9091;
        }
        server {
            listen 80;
            server_name localhost;

            #charset koi8-r;

            #access_log logs/host.access.log main;

            location / {
                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_cache my_cache;
                proxy_cache_key $host$uri$is_args$args;
                proxy_cache_valid any 1d;
                proxy_pass http://local;
               # index index.html index.htm;
            }
    nginx配置如下:
    展开
     1
    
  • 想当上帝的司机
    2019-07-24
    proxy_cache my_cache;
                proxy_cache_key $host$uri$is_args$args;
                proxy_cache_valid 200 304 302 1d;

    proxy_cache_key不同的浏览器缓存的不一样吗 缓存是跟浏览器相关的吗
    在chrome下是下载 在其他浏览器里是输出html
    展开
     1
    
  • 苗
    2019-06-26
    老师好,我在项目实践的时候遇到一个问题,单点登录页面有一个验证码图片,是后台通过过滤器拦截返回到前端的,前端通过<img alt="" src="${_path}/captcha">这种方式显示验证码;给登录系统做了反向代理后,现在这个请求会报404错误,网上有说是session失效,试了一些方法当无法解决;请教老师这是什么原因,有什么方法可以解决呢?

    nginx.conf配置: server {
            listen 80;
            server_name api.lzeoms.com;
            #charset koi8-r;
            #access_log logs/host.access.log main;
            location / {
                root html;
                index index.html index.htm;
            }
        location /cas/ {
                proxy_pass http://cas.lzeoms.com:8081/;
            }    
        location /cust/ {
                proxy_pass http://cust.lzeoms.com:8083/;
            }
        location /web/ {
                proxy_pass http://web.lzeoms.com:4200/;
            }
        location ~ .*\.(js|css|svg|ttf|woff|woff2|image|jpeg|map|text|html|jpg)$ {
                 proxy_pass http://cas.lzeoms.com:8081;
            }
        }
    展开

    作者回复: 两个建议:
    1、确认404请求使用的是哪一个location,你这里涉及到了正则和最长字符串匹配,可以通过54课的学习找到规则,也可以通过error.log的debug日志找到。
    2、你这里除了/用的是本地,其他四个全是反向代理,而前3个中你在proxy_pass最后加了/,最后一个没加。加与不加,结果完全不同,因为URL会被改掉。请学习89课。

    
    
我们在线,来聊聊吧