Nginx的泛域名绑定终于搞好了

这阵子在折腾nginx的web服务器,自从看见网上有些老大讲nginx的性能N好,所以这两天在搞搞了,不过最想研究的就是nginx的泛域名绑定,因为现在用的lighttpd服务器上也搞了个这样的设置,当然,一切操作都在VMware的虚拟机内搞了,一直觉得Vmware虚拟机是个伟大的发明.

不过经过今天一天在虚拟机的研究,终于搞好了,系统环境是Debian 4的Linux, PHP Version 5.2.6, Nginx0.6.32手工编译,还有lighttpd-1.4-19编译的spawn-fcgi 。

效果:

http://www.lpfrx.com => /var/www/lpfrx.com/www
http://xxx.lpfrx.com => /var/www/lpfrx.com/xxx
http://192.168.0.100 => /var/www/0.100/192.168

nginx.conf :

#user nobody;
user www-data;
worker_processes 1;

#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;

#pid logs/nginx.pid;

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 0;
keepalive_timeout 65;

#gzip on;

server {

listen 80;
#server_name localhost;
server_name _;
#charset koi8-r;

set $hostx $host;

#access_log logs/host.access.log main;

if ( $host ~* (.*)\.(.*)\.(.*) ) {

set $hostx $2.$3/$1;

}

location / {
#root html;
root /var/www/$hostx;
index index.php index.html index.htm;

if (-d $request_filename)
{

rewrite ^/(.*)([^/])$ http://$host/$1$2/ permanent;

}

# wordpress rewrite
if (-f $request_filename/index.php){
rewrite ^/wordpress/(.*) /wordpress/$1/index.php;
}
if (!-f $request_filename){
rewrite ^/wordpress/(.*) /wordpress/index.php;
}

}

#error_page 404 /404.html;

# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root 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 /var/www/$hostx/$fastcgi_script_name;
include /usr/local/nginx/conf/fastcgi_params;
}

# deny access to .htaccess files, if Apache’s document root
# concurs with nginx’s one
#

location ~ /\.ht {
deny all;
}
}

# another virtual host using mix of IP-, name-, and port-based configuration
#
#server {
# listen 8000;
# listen somename:8080;
# server_name somename alias another.alias;

# location / {
# root html;
# index index.html index.htm;
# }
#}

# HTTPS server
#
#server {
# listen 443;
# server_name localhost;

# ssl on;
# ssl_certificate cert.pem;
# ssl_certificate_key cert.key;

# ssl_session_timeout 5m;

# ssl_protocols SSLv2 SSLv3 TLSv1;
# ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
# ssl_prefer_server_ciphers on;

# location / {
# root html;
# index index.html index.htm;
# }
#}

}

然后启动nginx就可以实现了.

达到了预期的效果,而且也装了个wordpress的blog测试了永久链接的rewrite的功能, 等研究搞掂perl在nginx的应用后再迁移lighttpd的web服务器到nginx去.

关于无聊人

一个无聊人而已
此条目发表在nginx分类目录,贴了, , 标签。将固定链接加入收藏夹。

Nginx的泛域名绑定终于搞好了》有 13 条评论

  1. fly说:

    如果目录是http://abc.lpfrx.com => /var/www/a/c/abc.lpfrx.com
    那规则又应该怎么写呢.

  2. fly说:

    就是取域名第一部分的第一个字符和第一部分的最后一字符作为目录,规则应该怎么写呢.

  3. fly说:

    就是取域名第一部分的第一个字符和第一部分中最后一字符为目录,那么规则应该怎么写呢

  4. leondc说:

    fly, 这个要尝试一下,不知道行不行

  5. leondc说:

    if ( $host ~* (.*)\.(.*)\.(.*) ) {

    set $hostx $1;

    }

    if ( $hostx ~* (.)$ ) {
    set $b $1;
    }

    if ( $hostx ~* ^(.) ) {
    set $a $1;
    }

    set $hostx /$a/$b/$host;

  6. james说:

    非常好,正需要此设置,谢谢博主

  7. 路途志说:

    如果有多个虚拟主机,如何设置?
    在只有一个域名的情况下。默认就是泛域名解析了

  8. 枫子说:

    大哥 如果效果是
    http://abc.lpfrx.com/1234/ => /var/www/lpfrx.com/abc/1234/
    可以不?

    小弟新手,才学Linux..

  9. 无聊人说:

    理论上是可以的,不过我都要试试先

  10. VPS ROLL说:

    那如果我想把 我自己的www.vpsroll.com 指向 vpsroll.com呢?

  11. VPS ROLL说:

    这个问题我已经在网络上找了一天了。。一个个都简单的要死。

  12. 泛域名,用来做什么呢,seo吗

  13. 万家购物说:

    三级域名怎么做泛域名解释啊?

发表评论

电子邮件地址不会被公开。 必填项已用*标注