今天,一位网友从我2009年在大学发的帖子找到了我,问我如何实现php和asp共80端口。这瞬间让我想起了在大学的那些日子,一个人维护着系里面的网站和服务器,那时候学院的网站使用的asp,使用的是windows server2003 + iis6,那时候不知道如何做安全防范,只知道用了瑞星防火墙,只设置相应项目的读权限,设置数据库文件(Access)读写权限之类,然而时常被黑客攻击,被注入js,被篡改代码文件,想想那段时间都可怕。
那时候学院加了一个项目采用的php,由于学校网络中心的限制,对外只开放了80端口,而我们要在这台机器上实现php和asp共80端口,在网上查了很多相关的文章,大部分都是用过 apache 和 iis 整合完成的,实现起来算非常麻烦。不像现在,有了nginx这样优秀的反向代理软件,实现php和asp整合真的是易如反掌了。下面我说一下实现步骤:
前提:
windows平台,php网站(8080端口),asp网站成功运行(8001 端口)。
思路:
其实很容易,只要理解了nginx,不管后端使用php,asp,jsp之类的都没有任何问题。
nginx监听80端口,作为一个门面,用来接收用户所有请求,然后nginx通过url判断将请求交给php还是asp处理,处理完成之后结果由nginx返回给用户。简单吧。
1. 安装nginx
下载地址: http://nginx.org/download/nginx-1.4.7.zip
安装nginx至 D:/nginx 目录
2. 配置nginx
修改 D:/nginx/conf/nginx.conf 配置如下
worker_processes 1;
events {
worker_connections 1024;
}
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 logs/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
# asp proxy
location ^~ /asp/ {
proxy_pass http://127.0.0.1:8001;
}
# php proxy
location / {
proxy_pass http://127.0.0.1:8080;
}
}
}
3. 启动nginx
双击nginx.exe即可。
OK,现在就实现了通过80端口分别访问asp和php网站了。