nginx

site: http://www.nginx.com/prod.html

wiki: http://wiki.nginx.org/NginxChsHttpProxyModule

Install: http://wiki.nginx.org/Install

Articals:

http://www.cyberciti.biz/faq/rhel-linux-install-nginx-as-reverse-proxy-load-balancer/

http://www.ubuntugeek.com/using-nginx-as-a-reverse-proxy-to-get-the-most-out-of-your-vps.html

http://www.kutukupret.com/2011/05/11/nginx-reverse-proxying-multiple-domains-using-map-module/ (Map module)

 

在centos 5.x 和centos 6下的安装: 

正常情况下,直接运行: yum install nginxj即可, 但是如果提示nginx package不存在,则先创建/etc/yum.repos.d/nginx.repo 文件

内容如下:

[nginx]

name=nginx repo

baseurl=http://nginx.org/packages/OS/OSRELEASE/$basearch/

gpgcheck=0

enabled=1

注意:Replace “OS” with “rhel” or “centos”, depending on the distribution used, and “OSRELEASE” with “5” or “6”, for 5.x or 6.x versions, 

保存后,再次运行 yum install nginx即可。

 

配置:/etc/nginx/nginx.conf

user nginx; #默认用户

worker_processes  2;

error_log  /var/log/nginx/error.log;

pid        /var/run/nginx.pid;

events {

    worker_connections  1024;

}

http {

    include       /etc/nginx/mime.types;

    default_type  application/octet-stream;

    access_log /var/log/nginx/access.log;

    server_names_hash_bucket_size 64;

    sendfile        on;

    tcp_nopush     on;

    #keepalive_timeout  0;

    keepalive_timeout  65;

    tcp_nodelay        on;

	gzip              off; # you should enable gzip within site

    #gzip_comp_level   5;

    #gzip_http_version 1.0;

    #gzip_min_length   0;

    #gzip_types        text/plain text/html text/css image/x-icon application/x-javascript;

    $gzip_vary         on;

    include /etc/nginx/conf.d/*.conf; #自动加载所有的配置文件

    include /etc/nginx/sites-enabled/*; #自动加载所有的站点配置文件

}

 

配置/etc/nginx/conf.d/proxy.conf

proxy_redirect          off;

proxy_set_header        Host            $host;

proxy_set_header        X-Real-IP       $remote_addr;

proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;

client_max_body_size    10m;

client_body_buffer_size 128k;

client_header_buffer_size 64k;

proxy_connect_timeout   90;

proxy_send_timeout      90;

proxy_read_timeout      90;

proxy_buffer_size   256k;

proxy_buffers       32   16k;

proxy_busy_buffers_size 256k;

 

泛域名站点文件配置: (假定domain是:abc.com)

例子: 配置*.testing.abc.com 全部转向到*.dev.abc.com

配置文件:/etc/nginx/sites-enabled/testing.ab.com

内容如下:(里面的abc.com 根据你自己的情况进行替换)

server {

 listen 80;

 server_name *.testing.abc.com;

 if ( $host ~* (.*).testing.abc.com) {

	    set $sitename $1;

	}

 

 resolver 8.8.8.8; #因为我们自己没有配置dns,所以直接用google的dns



 access_log /var/log/nginx/$sitename.testing.abc.com-nginx.access.log;

 error_log /var/log/nginx/$sitename.testing.abc.com-nginx.error.log;

 index index.html;



 location / {

   proxy_pass  http://$sitename.dev.abc.com;

 }

 

  error_page 500 502 503 504 /50x.html;

 location = /50x.html {

  root /var/www;

 }



}

  

非泛域名配置:

内容如下:

server {

 listen   80;

 server_name  abc.com www.abc.com *.abc.com;

 access_log  /var/log/nginx/abc.com-nginx.access.log;

 error_log  /var/log/nginx/abc.com-nginx_error.log debug;



#redirect all non-www to www

 if ($host !~ 'www.abc.com' ) {

     rewrite  ^/(.*)$  http://www.abc.com/$1  permanent; 

 }



 #set your default location

 location / {

  proxy_pass         http://www.anotherdomain.com;

 }

 

 #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   /var/www;

 }

}

 

小插曲,因为服务器上已经默认安装了apache,导致nginx无法启动。 你可以使用lsof -i tcp:80 看看哪些程序占用了80端口.

[root@271334 ~]# lsof -i tcp:80

COMMAND  PID   USER   FD   TYPE     DEVICE SIZE/OFF NODE NAME

httpd   1465   root    3u  IPv4 4095368955      0t0  TCP *:http (LISTEN)

httpd   1466 apache    3u  IPv4 4095368955      0t0  TCP *:http (LISTEN)

httpd   1481 apache    3u  IPv4 4095368955      0t0  TCP *:http (LISTEN)

httpd   1752 apache    3u  IPv4 4095368955      0t0  TCP *:http (LISTEN)

httpd   4046 apache    3u  IPv4 4095368955      0t0  TCP *:http (LISTEN)

[root@271334 ~]# yum remove httpd

Loaded plugins: fastestmirror

Setting up Remove Process

Resolving Dependencies

--> Running transaction check

---> Package httpd.i686 0:2.2.15-5.el6.centos set to be erased

--> Finished Dependency Resolution



Dependencies Resolved



================================================================================

 Package       Arch         Version                     Repository         Size

================================================================================

Removing:

 httpd         i686         2.2.15-5.el6.centos         installed         2.8 M



Transaction Summary

================================================================================

Remove        1 Package(s)

Reinstall     0 Package(s)

Downgrade     0 Package(s)



Is this ok [y/N]: y

Downloading Packages:

Running rpm_check_debug

Running Transaction Test

Transaction Test Succeeded

Running Transaction

  Erasing        : httpd-2.2.15-5.el6.centos.i686                           1/1

warning: /etc/httpd/conf/httpd.conf saved as /etc/httpd/conf/httpd.conf.rpmsave



Removed:

  httpd.i686 0:2.2.15-5.el6.centos



Complete!

[root@271334 ~]#

  

 

 

创建/var/www目录和默认的index.html和50x.html文件.

index.html内容如下:

<html>

<head>

<title>Welcome to nginx!</title>

</head>

<body bgcolor="white" text="black">

<center><h1>Welcome to nginx!</h1></center>

</body>

</html>

50x.html内容如下:

<html>

<head>

<title>The page is temporarily unavailable</title>

<style>

body { font-family: Tahoma, Verdana, Arial, sans-serif; }

</style>

</head>

<body bgcolor="white" text="black">

<table width="100%" height="100%">

<tr>

<td align="center" valign="middle">

The page you are looking for is temporarily unavailable.<br/>

Please try again later.

</td>

</tr>

</table>

</body>

</html>

  

记得每次在更改配置文件,要重启nginx

/etc/init.d/nginx restart

 

enjoy with nginx. :)  

  

  

  


  

你可能感兴趣的:(nginx)