欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

nginx+gor 初心者之旅

程序员文章站 2022-05-23 21:50:19
...

hi 各位,我又来了。我最近都是初心者。踩坑王就是我。

背景就是我们都知道有一个引流工具gor,为了调试这个货,我想在本地起几个不同端口的服务进行调试,所以才有了今天卧槽的经验。

配置nginx

首先我们先安装nginx

brew search nginx
brew install nginx

nginx本身的nginx.config是设置好的,如下:

<!-- lang: shell -->
worker_processes  1;  

error_log       /usr/local/var/log/nginx/error.log warn;

pid        /usr/local/var/run/nginx.pid;

events {
    worker_connections  256;
}

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      /usr/local/var/log/nginx/access.log main;
    port_in_redirect off;
    sendfile        on; 
    keepalive_timeout  65; 

    include /usr/local/etc/nginx/conf.d/*.conf;
}

如果我们想启动多个服务,那么我们需要在路径./conf.d/里面新建多个server.conf,在同一个conf里面写多个server是不允许。
所以我们新建了两个,配置如下:

<!-- lang: shell -->
server {
    listen       8080; 这里写启动的端口
    server_name  localhost; 这里是server name
    root /Users/user_name/nginx_sites/; 这里是自定义webapp的目录

    location / { 
        index index.php; 页面文件
        autoindex on; 
    }   

    #proxy the php scripts to php-fpm  
    location ~ \.php$ {
        include /usr/local/etc/nginx/fastcgi.conf;
        fastcgi_intercept_errors on; 
        fastcgi_pass   127.0.0.1:9000; 
    }   

}

Mac OSX自带了php-fpm,但如果直接启动会报错,说log文件路径不正确。所以我们还需要更改php-fpm.conf文件如下:


[global]
; Pid file
; Note: the default prefix is /usr/local/var
; Default Value: none
;pid = run/php-fpm.pid

; Error log file
; If it's set to "syslog", log is sent to syslogd instead of being written
; in a local file.
; Note: the default prefix is /usr/local/var
; Default Value: log/php-fpm.log
error_log = /usr/local/var/log/php-fpm.log 此处需要自定义目录

按照如上配置,我们是可以正常启动服务的,但这个时候我们访问localhost:8080会出现403,原因是我们index.php所在的所有根目录都需要有755权限,如果没有,我们需要chmod 755 path就可以了。正常的界面如下:

php

gor

这就是坑的开始。先配置golang的环境以及安装gor我就不说了。
我碰见的问题是这样的。我使用命令
./gor --input-http :8080 --output-http www.verycd.com -stats -verbose

此时我访问8080界面会变成ok,这说明是gor接受到了这个input而出现的界面,如下:

phpok

同时gor的log显示让我很无语:


[DEBUG][PID 2963][1462464221018871751][1462464221018.871826ms] [HTTPClient] Connecting: http://www.verycd.com
[DEBUG][PID 2963][1462464236080793607][15061.921856ms] [HTTPClient] Connecting: http://www.verycd.com
[DEBUG][PID 2963][1462464236080850524][0.056917ms] [HTTP] Disconnected:  http://www.verycd.com
[DEBUG][PID 2963][1462464247776394823][11695.544299ms] [HTTPClient] Connecting: http://www.verycd.com
[DEBUG][PID 2963][1462464247776448620][0.053797ms] [HTTP] Disconnected:  http://www.verycd.com
[DEBUG][PID 2963][1462464251310765636][3534.317016ms] [HTTPClient] Connecting: http://www.verycd.com
[DEBUG][PID 2963][1462464251310821301][0.055665ms] [HTTP] Disconnected:  http://www.verycd.com

此时我尝试了几个方法。

  • 方法一:Google Group
    group里有一个和我碰见一样的问题,我看到了作者给了最新的binary,我下载之后,mac无法识别,估计是编译模式不同导致的吧。failed
  • 方法二:重新下载最新的代码,go build
    生成了gor,可以使用,但日志和前面一样
  • 方法三:直接从官方地址去下载最新build的binary
    可以使用,但日志和前面一样

到此,我要吐槽的不是这个日志了,关键是gor之后连version都不显示。我几乎可以判断gor还在demo阶段,根本无法投入正式使用这个结论。暂时到这里吧。