wnmpa或lnmpa 服务器搭建和原理
快速切入
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
本文为博主原创文章,转载请注明出自 博客园蓝波大人 并保留本文有效链接 ,转载请保留本声明!谢谢