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. :)
浙公网安备 33010602011771号