Linux上利用nginx域名转发

环境:Linux CentOS6.5  Tomcat 7 nginx-1.10.1-1.el6.ngx.x86_64


描述:

公司在阿里云有一台主机,里面部署了很多的应用程序,只有一个Tomcat可以使用80端口,其他应用访问的时候都需要在域名后面加上端口号,灰常的不方便也不雅观。

如:www.xxx.net:8888,www.xxx.cn:9999什么的,现在想直接输入www.xxx.net就能访问到8888,输入www.xxx.cn就能访问到9999,下面用到88端口的原因只是用来测试,测试ok了就改到80端口去。


使用yum命令安装Nginx:

首先添加nginx 的 yum 仓库——创建文件/etc/yum.repos.d/nginx.repo,写入以下信息:

[nginx]  
name=nginx repo  
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/  
gpgcheck=0  
enabled=1
完了直接运行命令进行安装:

yum -y install nginx

安装完毕后进行Nginx的配置:

在/etc/nginx/下修改nginx.conf文件的内容为:

user  nginx;
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;

worker_rlimit_nofile 65535;
events {
    worker_connections  65535;
}


http {
    include       /etc/nginx/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  /var/log/nginx/access.log  main;
	include /etc/nginx/conf.d/reverse-proxy.conf;
    sendfile on;
    keepalive_timeout 65;
    gzip on;
    client_max_body_size 50m; #缓冲区代理缓冲用户端请求的最大字节数,可以理解为保存到本地再传给用户
    client_body_buffer_size 256k;
    client_header_timeout 3m;
    client_body_timeout 3m;
    send_timeout 3m;
    proxy_connect_timeout 300s; #nginx跟后端服务器连接超时时间(代理连接超时)
    proxy_read_timeout 300s; #连接成功后,后端服务器响应时间(代理接收超时)
    proxy_send_timeout 300s;
    proxy_buffer_size 64k; #设置代理服务器(nginx)保存用户头信息的缓冲区大小
    proxy_buffers 4 32k; #proxy_buffers缓冲区,网页平均在32k以下的话,这样设置
    proxy_busy_buffers_size 64k; #高负荷下缓冲大小(proxy_buffers*2)
    proxy_temp_file_write_size 64k; #设定缓存文件夹大小,大于这个值,将从upstream服务器传递请求,而不缓冲到磁盘
    proxy_ignore_client_abort on; #不允许代理端主动关闭连接
	server {
        listen 88;
        server_name www.xxx.com;
        location / {
            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;
			proxy_pass http://127.0.0.1:80;
        }
        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
            root html;
        }
    }
}

然后配置我们需要转发到其它端口的几个域名,在/etc/nginx/conf.d/中新建reverse-proxy.conf文件,并写入如下内容:

server
{
    listen 88;
    server_name www.xxx.net;
    location / {
        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;
        proxy_pass http://127.0.0.1:8888;
    }
    access_log logs/xxx.net_access.log;
}
 
server
{
    listen 88;
    server_name www.xxx.cn;
    location / {
        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;
        proxy_pass http://127.0.0.1:9999;
    }
    access_log logs/xxx.cn_access.log;
}

server
{
    listen 88;
    server_name weixin.xxx.com;
    location / {
        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;
        proxy_pass http://127.0.0.1:80;
    }
    access_log logs/xxx.com_access.log;
}
在启动之前记得在/etc/nginx/目录中创建logs文件夹,并创建xxx.cn_access.log,xxx.net_access.log,xxx.com_access.log这几个日志文件。

然后输入命令:

service nginx start
就能在浏览器中直接访问www.xxx.net:88,www.xxx.com:88,www.xxx.cn:88,weixin.xxx.com:88了,Nginx会自动转发到我们配置好的端口上。





你可能感兴趣的:(Linux,Nginx)