先前有一篇文章是写如何通过nginx实现反向代理。但当时出现了一个问题,就是我原先centos上面装的opache由于端口原因必须停掉。并且/
的配置使路由转发出现了问题。导致我以前的php网站都不能访问。今天把这个问题解决了并记录。
先学习几个概念
反向代理是什么
反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。
Nginx和Apache的区别与联系
Nginx是一个高性能的HTTP服务器和反向代理服务器,最大的优点是节省资源。适用于处理高并发的请求。
- Nginx最初是按照反向代理设计的,和Apache不同, nginx关心如何处理url,而不是文件!
- Apache是基于进程处理的web服务器,Nginx是基于事件(event)的异步处理模式。
- Nginx比较适合来处理静态文件和资源。Apache虽然占用内存多了点,性能上稍逊,但一直比较稳健。适用于处理动态文件。
Apache 是个基于进程处理的web服务器,如果同时有多个请求,必须要启动多个进程来处理。 这样在高负载的情况下,资源的消耗和响应的速度都会有很大的问题。 而Nginx是个基于事件(event)的异步处理模式, 下面是Nginx的一个简单的示意图,有一个Master进程,Maste进程负责系统配置,管理socket,以及管理一个或是多个Worker进程。 而Worker进程接收和处理来自用户(浏览器)的请求。一般来讲,一个worker进程可以同时处理上千个用户的连接请求。每个worker进程采用异步的,基于event的方式来处理用户的请求。对于HTML的静态页面,Nginx会自行来处理,但对于PHP,JSP, Python等动态页面,Nginx是通过FastCGI(或者SCGI,UWSGI)来把动态页面的请求交给相应的处理程序来处理。
安装和配置
安装nginx
这里安装nginx上一篇文章讲了。有一点要注意和提醒的:在CentOS的YUM的基础的容器中,并没有nginx和php-fpm的RPM包。这两个RMP包在epel的容器中, 虽然可以从官网下载RPM包来安装,但如果你的CentOS/Redhat中没有加入YUM的epel容器,还是先把这个yum容器加上去比较好,以后可以省无数的折腾。
安装php-fpm
刚刚说了Nginx是通过FastCGI来把动态页面的请求交给相应的处理程序来处理。PHP-FPM (PHP-FastCGI Process Manager) 是目前最常用的一个PHP FastCGI的实现。通俗的讲,这个模块在Nginx和PHP之间桥梁,使之可以互相通信和交换。1
2
3yum install php-fpm
/etc/init.d/php-fpm start
chkconfig php-fpm on
安装好后来确认是否nginx和php-fpm安装正确。使用netstat tunlp
命令。查看端口监听情况。
配置default.conf文件使nginx可解析php文件
配置文件最后如下:路由为/时是反向代理。如果所有的文件我都放在html目录下。那么当我访问里面的多个网站时,都必须在conf文件里配置一下路由,比如下面的/images目录等。所以我专门建立了一个web目录,用来放我所有的php站点。fastcgi监听9000端口。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50server {
listen 80;
server_name cailidan.cn,www.cailidan.cn;
root /usr/share/nginx/html;
#charset koi8-r;
#access_log logs/host.access.log main;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
location / {
proxy_pass http://127.0.0.1:4000/;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
error_page 404 /404.html;
location = /404.html {
root /usr/share/nginx/html;
}
location /web {
root /usr/share/nginx/html;
index index.php index.html index.htm;
}
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
中间学到的东西
Redhat/CentOS安装软件有下面三种方法:
1.使用YUM 来在线安装软件,基本和 “软件商店”的概念类似, 只需要在yum的容器中找到相应的软件(rpm包),然后直接安装(或升级)就OK了,过程比较简单。
2.下载相应的RPM软件包,然后用RPM命令安装。
3.下载软件的源码的Tarball, 在自己的机器上编译和安装。这种方法相对来说比较麻烦。
RPM
RPM是 Redhat Package Manager的缩写,是Linux上的一种软件打包和管理的工具。
因为Linux的不同发行版(distribution),甚至同一发行版的不同版本之间往往有很多的不同, 开发者在某个Linux发行版下开发和编译的程序,直接放到另外一个Linux下有非常大的可能性无法运行。 因此早期的Linux的软件都是通过源码来分发,使用者基本都是通过在自己的Linux平台上重新编译源代码来安装软件。 但是这种编译源代码的方式比较繁琐和复杂,普通用户往往也难以掌握。
后来 Redhat推出了RPM这个软件打包的方式。就是在特定的Linux平台上把软件编译好,然后把与这个软件相关的文件和库打包成一个文件(RPM包), 但需要注意的是: 通常不同的distribution所发布的RPM包往往不能用于其他的Linux的distributions上面。 例如,针对Redhat的RPM包往往无法直接在OpenSUSE上进行安装。因此,在使用RPM方式进行安装的时候,必须选择和你使用的平台一致的RPM安装包。
RUM
为了解决软件依赖的问题,已经为了给用户提供一种更加方便简单的软件安装方法, YUM被开发出来了。
YUM 是Yellowdog Updater Modified 的缩写. YUM 是建立在RPM的基础之上的, 为用户提供软件安装,升级,卸载的功能。
YUM最大的好处是解决了软件依赖的问题。YUM 把很多软件的RPM包放在RPM 容器(repository)中, 用YUM 方式来安装软件的时候,会自动分析你要安装的软件的依赖关系,并会自动帮你安装必须的“依赖软件”, 这样就解决了最为困扰用户的软件依赖的问题。
那YUM容器(repository)的是什么呢?
YUM容器类似一个软件仓库的概念,不但有各个软件的RPM安装包,还记录了他们之间的依赖关系。
1 | yum list/search /info xxx |