CentOS7下搭建nginx反向代理服务器使得外网可以二级域名访问内网应用

创建nginx的本地yum源

[[email protected] ~]# yum list |grep nginx
No package nginx available.
[[email protected] ~]# //给跪了,什么鬼,怎么没有nginx的rpm?算了,直接自己手动配一个官网repo吧
[[email protected] ~]# //访问nginx官网,进入dowload页面,翻到底部的Pre-Build Package,选stable version
---------------------------
To set up the yum repository for RHEL/CentOS, create the file named /etc/yum.repos.d/nginx.repo with the following contents:

[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”, “6”, or “7”, for 5.x, 6.x, or 7.x versions, respectively.
---------------------------
[[email protected] ~]#
[[email protected] ~]# //大意就是:创建/etc/yum.repos.d/nginx.repo文件,贴入模板内容,替换相应的系统和软件版本号
[[email protected] ~]#
[[email protected] ~]# cd /etc/yum.repos.d
[[email protected] yum.repos.d]# vi nginx.repo
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1

:wq

以yum方式安装nginx

[[email protected] yum.repos.d]# yum list |grep nginx
nginx.x86_64                               1:1.10.0-1.el7.ngx          nginx
nginx-debug.x86_64                         1:1.8.0-1.el7.ngx           nginx
nginx-debuginfo.x86_64                     1:1.10.0-1.el7.ngx          nginx
nginx-module-geoip.x86_64                  1:1.10.0-1.el7.ngx          nginx
nginx-module-image-filter.x86_64           1:1.10.0-1.el7.ngx          nginx
nginx-module-njs.x86_64                    1:1.10.0.0.0.20160414.1c50334fbea6-1.el7.ngx
                                                                       nginx
nginx-module-perl.x86_64                   1:1.10.0-1.el7.ngx          nginx
nginx-module-xslt.x86_64                   1:1.10.0-1.el7.ngx          nginx
nginx-nr-agent.noarch                      2.0.0-9.el7.ngx             nginx
pcp-pmda-nginx.x86_64                      3.10.6-2.el7                base

[[email protected] yum.repos.d]# yum install nginx.x86_64
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * rpmforge: mirrors.neusoft.edu.cn
Resolving Dependencies
--> Running transaction check
---> Package nginx.x86_64 1:1.10.0-1.el7.ngx will be installed
--> Finished Dependency Resolution

Dependencies Resolved

####################################################################################
 Package                   Arch                       Version                                Repository                 Size
####################################################################################
Installing:
 nginx                     x86_64                     1:1.10.0-1.el7.ngx                     nginx                     640 k

Transaction Summary
####################################################################################
Install  1 Package

Total download size: 640 k
Installed size: 2.1 M
Is this ok [y/d/N]: y
Downloading packages:
nginx-1.10.0-1.el7.ngx.x86_64.rpm                                                                     | 640 kB  00:00:18
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : 1:nginx-1.10.0-1.el7.ngx.x86_64                                                                           1/1
----------------------------------------------------------------------

Thanks for using nginx!

Please find the official documentation for nginx here:
* http://nginx.org/en/docs/

Commercial subscriptions for nginx are available on:
* http://nginx.com/products/

----------------------------------------------------------------------
  Verifying  : 1:nginx-1.10.0-1.el7.ngx.x86_64                                                                                                         1/1 

Installed:
  nginx.x86_64 1:1.10.0-1.el7.ngx                                                                                                                          

Complete!
[[email protected] yum.repos.d]# nginx -v
nginx version: nginx/1.10.0

[[email protected] yum.repos.d]# service nginx start
Redirecting to /bin/systemctl start  nginx.service
● nginx.service - nginx - high performance web server
   Loaded: loaded (/usr/lib/systemd/system/nginx.service; disabled; vendor preset: disabled)
   Active: active (running) since Tue 2016-05-10 10:19:20 CST; 3s ago
     Docs: http://nginx.org/en/docs/
  Process: 29730 ExecStart#/usr/sbin/nginx -c /etc/nginx/nginx.conf (code#exited, status#0/SUCCESS)
  Process: 29729 ExecStartPre#/usr/sbin/nginx -t -c /etc/nginx/nginx.conf (code#exited, status#0/SUCCESS)
 Main PID: 29733 (nginx)
   CGroup: /system.slice/nginx.service
           ├─29733 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
           └─29734 nginx: worker process

May 10 10:19:20 localhost systemd[1]: Starting nginx - high performance web server...
May 10 10:19:20 localhost nginx[29729]: nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
May 10 10:19:20 localhost nginx[29729]: nginx: configuration file /etc/nginx/nginx.conf test is successful
May 10 10:19:20 localhost systemd[1]: Failed to read PID from file /run/nginx.pid: Invalid argument
May 10 10:19:20 localhost systemd[1]: Started nginx - high performance web server.

[[email protected] yum.repos.d]# curl localhost   //或者打开浏览器访问http://localhost/
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href#"http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href#"http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>

ok安装好了,下面就是配置的事情

配置nginx为反向代理服务器

设置nginx开机自启动

[[email protected] yum.repos.d]# cd /etc/nginx
[[email protected] nginx]# chkconfig nginx on
Note: Forwarding request to ‘systemctl enable nginx.service‘.
Created symlink from /etc/systemd/system/multi-user.target.wants/nginx.service to /usr/lib/systemd/system/nginx.service.

设置nginx的反向代理规则

[[email protected] nginx]# vi nginx.conf
user  nginx;
worker_processes  1;

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

events {
    worker_connections  1024;
}

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;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    gzip  on;

    #[email protected] 11:30
    include /etc/nginx/conf.d/reverse-proxy.conf;

    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          80;
        server_name     localhost;
        location / {
            root html;
            index       index.html index.htm;
        }
        error_page      500 502 503 504 /50x.html;
        location # /50x.html {
            root html;
        }
    }
    #modification is done!

}

:wq

[[email protected] nginx]# cd conf.d/
[[email protected] conf.d]# vi reverse-proxy.conf
## wiki.myweb.org -> http://10.1.1.230:8013
server
{
    listen 80;
    server_name         wiki.myweb.org;
    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://10.1.1.230:8013;
    }
    access_log /var/log/nginx/wiki_access.log;
}

## zentao.myweb.org/zentao -> http://10.1.1.240:49017/zentao
server
{
    listen 80;
    server_name         zentao.myweb.org;
    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://10.1.1.240:49017;
    }
    access_log /var/log/nginx/zentao_access.log;
}

## trac.myweb.org -> http://10.1.1.240:8000/
server
{
    listen 80;
    server_name         trac.myweb.org;
    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://10.1.1.240:8000;
    }
    access_log /var/log/nginx/trac_access.log;
}

## kb2.myweb.org -> http://10.1.1.230:8080/
server
{
    listen 80;
    server_name         kb2.myweb.org;
    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://10.1.1.230:8080;
    }
    access_log /var/log/nginx/iphmk_admin_kb2_access.log;
}

:wq
[[email protected] conf.d]# service start nginx

最后一步

因为我们nginx的反向代理服务器是部署在10.1.1.230上,它本身也是内网服务器,所以需要在路由器上配一个路由转发规则:

所有从外网80端口进来的请求,都转发到nginx所在的服务器,由nginx来负责转发。

路由器设置:虚拟服务器
WAN口        wan1
WAN端口       80      常用服务:  DNS(53)
LAN端口       80
内网IP      10.1.1.230
协议:     全部

ok,大公告成~

本文参考以下博文来实现部署:

http://blog.csdn.net/hejingyuan6/article/details/47262419 (考虑做window的测试)

http://www.ttlsa.com/nginx/use-nginx-proxy/

http://blog.csdn.net/isresultxal/article/details/50674378

http://blog.csdn.net/xshalk/article/details/51313101 (后续我也要做证书授权的说)

后续的改进

我这种代理配置,看着不怎么美观,我记得有更优美的配置方式的,等悠闲的时候,可以继续优化。

【重要补充:】

对了,还忘记了交代:还需要一个自己的域名(myweb.org),才可以这样去使用二级域名来解析内网应用。

如果没有,可以申请阿里云服务,然后在路由器上,来绑定内网入口的网络服务商分配给动态IP(这步很简单,就是路由器上设置填上申请的动态域名就好了)

这里的工作,属于准备期工作,申请啊备案啊,还是很繁琐的,本次没有记录下来~

时间: 2024-10-13 21:05:18

CentOS7下搭建nginx反向代理服务器使得外网可以二级域名访问内网应用的相关文章

RHEL6.4 搭建Nginx反向代理服务器

实验需求:使用nginx搭建反向代理服务器,把用户的请求分发给后端的web服务器组192.168.100.1和192.168.100.2 内网web服务器192.168.100.1          内网接口eth0(192.168.1.254) ----------- nginx反向代理服务器------------ 公网客户端1.1.1.1 内网web服务器192.168.100.2           公网接口eth1(1.1.1.254) 一.部署内网的网站服务器192.168.100.

centos7.4 搭建nginx反向缓存代理

nginx可以实现基于硬盘缓存的反向代理服务通过proxy_cache和fastcgi_cache两个功能模块完成配置 ----- 本例:nginx反向代理服务器192.168.80.81web服务器192.168.80.82win7客户机 192.168.80.79 -----### web服务器192.168.80.82 配置:安装简单的httpd,提供web服务即可 -----### nginx反向代理服务器192.168.80.81配置:1.上传反向代理插件.软件和解压:tar xzvf

Windows下安装Nginx反向代理服务器

一,首先到 Nginx官方网站下载最新版本,下载网址: http://nginx.org/en/download.html 二,解压ZIP包,目录修改为nginx.放置在D盘根目录下,也可以放置在其它目录. 然后在命令行下,切换nginx的主目录执行命令即可起动,停止,重起. start nginx //起动 nginx -s stop // 停止nginx nginx -s reload // 重新加载配置文件并重起 三,配置: #隐藏版本号 server_tokens off; #默认用IP

centos7下搭建nginx+php7.1+mariadb+memcached+redis

一.环境准备 1.首先介绍一下环境,以及我们今天的主角们 我用的环境是最小化安装的centos7,mariadb(江湖传言mysql被oracle收购后,人们担心像java一样毁在oracle手上于是成了新的分支,但是还是像mysql一样用), php7.1.0(版本无所谓,都是7版本),nginx1.10(我们安装的是稳定版而没有一味的追求新),memcached,和redis可以随机选择一个,当然全安装也没有干扰 2.软件包下载 1)mariadb软件包(yum安装,编译安装因为boost问

搭建Nginx 反向代理服务器

一.什么是反向代理: 反向代理(Reverse Proxy)是指把Nginx服务器放在互联网接口,负责接收处理用户客户端的请求,然后把请求发往后端的Web server上,返回给用户的数据也要先经过Nginx服务器在发给用户,Nginx可以实现负载均衡和缓存的功能,从而减轻服务器的访问压力. 二.示例图: 三.Nginx服务器配置: 编译安装: 1.tar xvf nginx-1.4.7.tar.gz 2.cd nginx-1.4.7 3../configure   --prefix=/usr

Linux系统:Centos7下搭建PostgreSQL关系型数据库

本文源码:GitHub·点这里 || GitEE·点这里 一.PostgreSQL简介 1.数据库简介 PostgreSQL是一个功能强大的开源数据库系统,具有可靠性.稳定性.数据一致性等特点,且可以运行在所有主流操作系统上,包括Linux.Unix.Windows等.PostgreSQL是完全的事务安全性数据库,完整地支持外键.联合.视图.触发器和存储过程,支持了大多数的SQL:2008标准的数据类型,包括整型.数值型.布尔型.字节型.字符型.日期型.时间间隔型和时间型,它也支持存储二进制的大

在Centos7下搭建Socks5代理服务器

在Centos7下搭建Socks5代理服务器 知者不言0人评论20237人阅读2017-12-21 09:50:25 采用socks协议的代理服务器就是SOCKS服务器,是一种通用的代理服务器.Socks是个电路级的底层网关,是DavidKoblas在1990年开发的,此后就一直作为Internet RFC标准的开放标准.Socks 不要求应用程序遵循特定的操作系统平台,Socks 代理与应用层代理. HTTP 层代理不同,Socks 代理只是简单地传递数据包,而不必关心是何种应用协议(比如FT

搭建nginx反向代理用做内网域名转发

基于域名的7层转发的实现(NAT+反向代理) 在实际办公网中,因为出口IP只有一个,要实现对外提供服务的话就必须得做端口映射,如果有多个服务要对外开放的话,这只能通过映射不同端口来区分,这在实际使用过程中非常的痛苦(记忆困难.一一对应关系也没有规律.访问的时候还得加端口),这个痛苦的问题用表格的形式来形象的描述如下: Public IP Public Port Number Internal IP Internal Port Number Note 1.1.1.1 80 192.168.1.10

搭建Nginx反向代理做内网域名转发

由于公司内网有多台服务器的 http 服务要映射到公司外网静态 IP,如果用路由的端口映射来做,就只能一台内网服务器的 80 端口映射到外网 80 端口,其他服务器的 80 端口只能映射到外网的非 80 端口.非 80 端口的映射在访问的时候要域名加上端口,比较麻烦. 我们可以在内网搭建一个Nginx反向代理服务器,将Nginx反向代理服务器的80映射到外网IP的80,这样指向到公司外网IP的域名的HTTP请求就会发送到Nginx反向代理服务器,利用Nginx反向代理将不同域名的请求转发到内网不