show
top

wnmpa或lnmpa 服务器搭建和原理

快速切入

  1. wnmpa
    1. 安装nginx
    2. 进入nginx目录
    3. 添加虚拟主机
    4. 伪静态
    5. 参考文章
  2. lnmpa
    1. 安装教程
    2. 各种坑

wnmpa

新手可以先使用windows基础安装 明白原理 需要wampserver服务

安装nginx

http://jingyan.baidu.com/article/7f41ecec0c5b27593d095cc5.html

进入nginx目录

start nginx.exe --启动

nginx.exe -s stop --停止nginx

nginx.exe -s reload --重新加载nginx

nginx.exe -s quit --退出nginx

补充:另外找到一个解决方案就是在php的location里面加上这么一句话“fastcgi_intercept_errors on;”,原因是默认情况下只要是php文件,nginx不管他存不存在,都会交给php去处理,这个错误其实是php-cgi报告出来的,加上“fastcgi_intercept_errors on;”这个指令后就让nginx判断404这样的常规错误啦^^

添加虚拟主机

在nginx.conf 主server{}后添加

include D:/wnmp/nginx/conf/vhost/*.conf;

新建vhost文件夹 添加类似 miku.conf (miku为目录自定义修改)

    server {

        listen 80;
        server_name localmiku;
        root           D:/wnmp/www/miku;
        error_log  logs/miku.error.log;


        location / {
                index  index.html index.htm index.php miku.html;
        }

        #规定需要404页面
        error_page  404              /404.html;

        #如果使用php-fpm 来处理php
         location ~ \.php$ {

            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;   
        }
     }

从起nginx

伪静态

原理

nginx里使用伪静态是直接在nginx.conf 中写规则的,并不需要像apache要开启写模块(mod_rewrite)才能进行伪静态。

location / {
            root   D:/phpweb/wwwroot;
            index  index.php index.html index.htm;
            rewrite ^(.*)/t(\d+)\.html$ $1/index.php?t=3 last;
}

网址输入 t3.html
仔细观察 rewrite ^(.)/t(\d+).html$ $1/index.php?t=3 last;其实感觉nginx的伪静态规则蛮好写的。就是用正则的基础上,一个rewrite来声明,然后^是伪静态规则开头,(.)匹配任意字符,这里匹配的就是域名了,t就是你在这里想加的字符,如你可以加apple、orange这样的分类名了,(\d+)匹配的是数字,.html匹配的是后缀,$就是正则匹配的结束。后面半部分就是要改写的url了,用$1打头,表示域名,/index.php?t=3就是要改写的URL,用last;结束即可。 可以作为独立文件 写成.htaccess 然后引用 并且过滤

.htaccess

http://www.jb51.net/article/59376.htm

反向代理 apache

说明

下面说下何为反向代理,以及为何进行反向代理。按照百科的介绍:反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。说得简明点,按照我的理解,反向代理就是一个服务器负责接收外网的请求,但自己不处理,而是告诉其他的内网服务器去处理,并把人家处理的结果返回给用户。从用户角度来看,请求就是这个代理服务器来处理的,实际上他就是转发了一下,返回人家的结果

好处

Nginx处理静态内容是把好手,Apache虽然占用内存多了点,性能上稍逊,但一直比较稳健。倒是Nginx的FastCGI有时候会出现502 Bad Gateway错误。一个可选的方法是Nginx做前端代理,处理静态内容,动态请求统统转发给后端Apache。Nginx Server配置如下(测试环境):
其中Nginx全面接管80端口,Apache退居二线,监听8080端口。

匹配规则

在nginx的配置文件编写中,location的匹配规则基本遵循以下2个方面:
先匹配普通,再匹配正则 (但正则匹配可能会覆盖普通匹配),一句话描述:正则location让步普通location的严格精确匹配结果;但覆盖普通location的最大前缀匹配结果。
匹配普通时与编辑顺序无关,匹配正则时与编辑顺序有关
1.不带前缀(普通location):最大前缀匹配或者严格精确匹配
2.=(普通location):等于匹配(严格精确匹配)
3.~(普通location):表示“非”,~表示“正则”,意思是:不要继续匹配正则,(最大前缀匹配或者严格精确匹配)
4.~(正则location):区分大小写匹配
5.~*(正则location):不区分大小写匹配
6.@(指定匹配):指定使用location名称

参考文章

参考nginx.conf
https://my.oschina.net/u/2257245/blog/412249
优化nginx.conf
https://segmentfault.com/a/1190000002797601
location 匹配规则
http://54rd.net/html/2015/webserver_0107/13.html
proxy实例讲解(HTTP,HTTPS)
http://54rd.net/html/2015/webserver_0125/35.html
wamp套餐使用fastcgi 提高性能 (wamp套餐默认不使用fastcgi 可在phpifno查看)
https://commaster.net/content/installing-php-fastcgi-and-zend-opcache-wampserver 老外神文
大概修改以下文件
主要操作 主要文件nginx.conf vhost httpd.conf httpd-vhosts.conf
     继承文件 proxy.conf proxy-pass-php.conf
额外操作 日志文件 log

lnmpa

为了更有效,快捷,偷懒 实际操作时候我用了使用 centos 和 lnmpa环境包

安装教程

http://lnmp.org/
LNMPA 目录结构
LNMPA相关目录文件位置
LNMPA默认网站配置文件:
nginx : /usr/local/nginx/conf/nginx.conf
apache : /usr/local/apache/conf/httpd.conf

FAQ: http://lnmp.org/faq/lnmp-software-list.html

各种坑

中文文件名乱码
http://blog.chinaunix.net/uid-26569436-id-3050965.html
首先查询支持的编码:
locale -a
如果没有你需要的编码,例如zh_CN.utf8
root运行: #dpkg-reconfigure locales
选择你需要的编码,用空格选中,可多选。tab选择“OK”,回车。
默认编码选择zh_CN.utf8
安装你所需要的编码。
修改/etc/profile,
注释掉

export LC_ALL=C

增加

    export TERM=xterm-color
    export LC_CTYPE=zh_CN.gb2312
    export LANG=en_US.UTF-8

注意在配置过程中 可能会遇到防火墙无法连接相关服务
防火墙相关命令如下(centos 6)
service iptables start --启动

service iptables status --状态

service iptables stop --停止

service iptables restart --从起

配置文件目录
/etc/sysconfig/iptables
内容大致为

   *filter 
    :INPUT ACCEPT [4:116] 
    :FORWARD ACCEPT [0:0] 
    :OUTPUT ACCEPT [1:152] 
    -A INPUT -i lo -j ACCEPT 
    -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT 
    -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT 
    -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT 
    -A INPUT -p tcp -m tcp --dport 3306 -j ACCEPT 
    -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT 
    COMMIT
posted @ 2017-09-30 01:02  蓝波大人  阅读(1305)  评论(0编辑  收藏  举报