nginx 网站的建立及使用过程中遇到的问题

1.单一网站n

1)使用默认80端口访问:

server {

        listen      80;              #端口监听

        location / {

            root  /home/ceshi; #网站地址

            index  index.html index.htm index.php;  #默认访问页面

        }

        error_page  500 502 503 504  /50x.html;  #错误页面

        location = /50x.html {

            root  html;

        }

        access_log  logs/ceshi-access.log  main;  #访问日志

        error_log  logs/ceshi-error.log  notice;    #错误日志

    }

2) 域名访问或者是ip+端口访问

server {

        listen      8001;       #端口监听

        server_name  ceshi.loc;     #域名配置    

        location / {

            root  /home/ceshi;            #网站地址

            index  index.html index.htm index.php;        #定义首页索引文件的名称

        }

        error_page  500 502 503 504  /50x.html;        #错误页面

        location = /50x.html {

            root  html;

        }

        access_log  logs/ceshi-access.log  main;        #访问日志

        error_log  logs/ceshi-error.log  notice;              #错误日志

    }

2.后端为index.php的网站

server {

        listen      8002;

        root  /home/ceshi;            #将root变成server的全局变量

        location / {

            index  index.html index.htm index.php;    #默认访问页面

        }

        location ~ \.php$ {

            fastcgi_pass  127.0.0.1:9000;     #php-fpm监听的地址

            #fastcgi_index  index.php;

            #fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;

            #include        fastcgi_params;

            include        fastcgi.conf;   #等价于上面两条代码

        }

        error_page  500 502 503 504  /50x.html;

        location = /50x.html {

            root  html;

        }

        access_log  logs/ceshi-access.log  main;      #访问日志

        error_log  logs/ceshi-error.log  notice;         #错误日志

    }

3.php-ci 框架网站的搭建

CI框架结构图

server {

        listen      8003;

        root    /home/advert/;

        index  index.htm index.php ;

        location / {

            fastcgi_pass  127.0.0.1:9000;

            fastcgi_param SCRIPT_FILENAME $document_root/index.php;

            fastcgi_param PATH_INFO $fastcgi_path_info;

            ##正则解析路径     

            fastcgi_split_path_info ^(.+\.php)(.*)$;

            #fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;               

            #include        fastcgi_params;           

            include        fastcgi.conf;   #等价于上面两条代码

        }

        error_log  logs/advert-error.log  notice;

        access_log  logs/advert-access.log  main;

    }

4.反向代理

server {

        listen      8004;

        location /{

                proxy_pass  http://192.168.9.221:8001;         #反向代理的网址

        }

        error_log  logs/pass-error.log  notice;

        access_log  logs/pass-access.log  main;

    }

5.负载均衡

upstream ceshi {          #负载均衡的地址

            server 192.168.9.221:8001;

            server 192.168.9.221:8002;

   server 192.168.9.221:8002 weight=1 max_fails=1 down;

          #weight权重    max_fail最大失败次数     down 不参与负均衡   fail_timeout 失败超时时间  Backup备份

        }

    server {

        listen      8005;

        location / {

              #设置主机头和客户端真实地址,以便服务器获取客户端真实IP

                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_buffering off;                  #禁用缓存

                proxy_pass http://ceshi;     #负载均衡的名称

        }

        error_page  500 502 503 504  /50x.html;

        location = /50x.html {

            root  html;

        }

    error_log  logs/load-error.log  notice;       

 access_log  logs/load-access.log  main;

    }

补充知识点:

A.nginx 的 upstream目前支持分配方式

1)、轮询(默认) 

每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。

 2)、weight 

指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。

 3)、ip_hash 

每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。  

4)、fair(第三方) 

按后端服务器的响应时间来分配请求,响应时间短的优先分配。

5)、url_hash(第三方)

B.每个设备的状态设置汇总:

1).down 表示单前的server暂时不参与负载 

2).weight 默认为1.weight越大,负载的权重就越大。 

3).max_fails:允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream模块定义的错误 

4).fail_timeout: max_fails次失败后,暂停的时间。 

5).backup: 其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻

6.单独提出配置文件

在nginx.conf文件中

include /usr/local/nginx/conf/service.conf;

server.conf中指定server模块的定义

问题汇总:

1)[emerg] unknown log format "main" in /usr/local/nginx/conf/nginx.conf:XX

解决方法:

打开nginx.conf,"main"错误是因为丢失了log_format选项,默认是被屏蔽掉了,将屏蔽打开就好了

2)Nginx配置文件问题导致打不开网站unknown directive

解决方法:

注意符号两面要有空格

3)[error] 1723#0: *10 connect() failed (111: Connection refused) while connecting to upstream, client: 192.168.9.11, server: , request: "GET / HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "192.168.9.11:8002"

造成原因: 9000端口没有监听,php-fpm没有启动

解决方法:

A。ubuntu:   apt-get install php5-fpm     

  service   php5-fpm start

B. 源码安装

在安装php 的时候需要指定参数--enable-fpm(php未安装的时候)

4.FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream

造成的原因:定义调用脚本文件路径有问题

解决方法:

fastcgi_param SCRIPT_FILENAME  项目路径$fastcgi_script_name;

 include        fastcgi_params;

5) FastCGI sent in stderr: "Access to the script '/home/advert' has been denied (see security.limit_extensions)"

解决方法:

a.修改php.ini配置文件中cgi.fix_pathinfo=1

b.FPM的security.limit_extension设置用于限制允许解析的主脚本的扩展名。它可以防止恶意代码被执行。默认值是简单的.php可以配置/etc/php5/fpm/pool.d/www.conf

将/etc/php5/fpm/pool.d/www.conf文件中的security.limit_extension注释打开

c.重新启动php-fpm和nginx服务,页面能够正常访问

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,254评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,875评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,682评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,896评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,015评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,152评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,208评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,962评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,388评论 1 304
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,700评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,867评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,551评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,186评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,901评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,142评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,689评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,757评论 2 351

推荐阅读更多精彩内容

  • [root@redhat7 ~]# wget http://am1.php.net/get/php-7.1.2.t...
    醋留香阅读 1,422评论 1 4
  • [toc] 在公司的网站上推荐使用 docker 容器来安装环境,一个项目一个 docker 容器。 、、 百度百...
    Mdvtrw阅读 1,487评论 0 1
  • Nginx简介 解决基于进程模型产生的C10K问题,请求时即使无状态连接如web服务都无法达到并发响应量级一万的现...
    魏镇坪阅读 1,996评论 0 9
  • 一.nginx主配置文件目录: 1.win-utf, koi-utf,koi-win 这三个文件都是与编码转换映射...
    宇晨棒棒的阅读 1,792评论 0 1
  • 真的好久没有看过这样的电视剧了。 从一个人生活到现在啊,大概也过去七个月了吧,真的是,一直在凑活呢,宿舍没有厨房,...
    徐文沫阅读 225评论 0 0