首頁 >後端開發 >php教程 >什麼是Nginx代理服務? nginx正向代理和反向代理的實例

什麼是Nginx代理服務? nginx正向代理和反向代理的實例

不言
不言原創
2018-08-06 11:58:484251瀏覽

這篇文章要跟大家介紹的內容是關於什麼是Nginx代理服務? nginx正向代理和反向代理的實例,有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。

一、代理程式簡介

1.代理程式

什麼是Nginx代理服務? nginx正向代理和反向代理的實例

#2.Nginx代理服務

什麼是Nginx代理服務? nginx正向代理和反向代理的實例

3. 正向代理與反向代理

區別在於代理的物件不一樣。

正向代理程式代理的物件是客戶端

什麼是Nginx代理服務? nginx正向代理和反向代理的實例

#反向代理程式的物件是服務端

什麼是Nginx代理服務? nginx正向代理和反向代理的實例

#4. Nginx代理模組ngx_http_proxy_module

語法

Syntax:    proxy_pass URL;
Default:    —
Context:    location, if in location, limit_except

URL支援:

  1. #http:http: //localhost:8000/uri/

  2. https:https://192.168.1.111:8000/uri/

  3. #socket:http://unix:/tmp/backend.socket:/uri/

二、反向代理實例

1. 建立真實要存取的服務配置:vim conf.d/real_server.conf

server {
    # 监听8080端口
    listen 8080;

    location / {
        # 配置访问根目录为 /vagrant/proxy
        root /vagrant/proxy;
    }
}

2. 建立反向代理配置vim conf.d/fx_proxy.conf

server {
    # 监听80端口
    listen 80;
    server_name localhost;

    location ~ /fx_proxy.html {
        # 设置反向代理,将访问 /fx_proxy.html 的请求转发到 http://127.0.0.1:8080
        proxy_pass http://127.0.0.1:8080;
    }
}

3. nginx -s reload 重新載入nginx設定檔

#4. 建立/vagrant/proxy/fx_proxy.html 檔案

  • vim /vagrant/proxy/fx_proxy.html

#
nbsp;html>

    
        <meta>
        <title>反向代理</title>
    
    
        <h1>反向代理</h1>
    

5. 使用ss -tln 查看80 連接埠和8080 連接埠全部開啟

[root~]# ss -tln
State       Recv-Q Send-Q Local Address:Port               Peer Address:Port
LISTEN      0      128               *:8080                          *:*
LISTEN      0      128               *:80                            *:*
LISTEN      0      128               *:22                            *:*
LISTEN      0      10        127.0.0.1:25                            *:*
LISTEN      0      128              :::22                           :::*

6. 使用curl進行存取測試

  • http://127.0.0.1/fx_proxy.html可以正常存取

[root~]# curl http://127.0.0.1/fx_proxy.html
nbsp;html>

        
                <meta>
                <title>反向代理</title>
        
        
                <h1>反向代理</h1>
        
  • #http://127.0.0.1:8080/fx_proxy.html可以正常存取

[root~]# curl http://127.0.0.1:8080/fx_proxy.html
nbsp;html>

        
                <meta>
                <title>反向代理</title>
        
        
                <h1>反向代理</h1>
        

三、正向代理實例

正向代理必須在有公網IP的正式的伺服器上測試。
筆者遠端伺服器的IP位址為:39.106.178.166,測試用的網域為 zx_proxy.ws65535.top

1. 在服务器创建真实要访问的服务配置:vim conf.d/real_server.conf

server {
    # 监听80端口
    listen 80;
    # 域名为 zx_proxy.ws65535.top;
    server_name  zx_proxy.ws65535.top;

    location / {
        # $http_x_forwarded_for 可以记录客户端及所有中间代理的IP
        # 判断客户端IP地址是否是 39.106.178.166,不是则返回403
        if ($http_x_forwarded_for !~* "^39\.106\.178\.166") {
            return 403;
        }
        root   /usr/share/nginx/html;
        index  index.html;
    }
}

2. nginx -s reload 重新载入nginx配置文件

3. 在本地使用浏览器访问 http://zx_proxy.ws65535.top/,返回 403 Forbidden,说明访问被拒绝

什麼是Nginx代理服務? nginx正向代理和反向代理的實例

4. 在服务器创建代理服务配置:vim conf.d/zx_proxy.conf

server {
    # 代理服务监听的端口(注意,一定要看服务器供应商控制台的安全组是否开启了该端口)
    listen 3389;

    # 配置DNS,223.5.5.5是阿里云的DNS
    resolver 223.5.5.5;
    
    # 正向代理配置
    location / {
        proxy_pass http://$http_host$request_uri;
    }
}

5. nginx -s reload 重新载入nginx配置文件

6. 浏览器配置代理(以下是Windows10的代理配置方式,其他操作系统自行配置)

  • 控制面板 -> 网络和Internet -> 代理 -> 手动设置代理

什麼是Nginx代理服務? nginx正向代理和反向代理的實例

7. 设置代理后在本地使用浏览器访问 http://zx_proxy.ws65535.top/,可以正常访问

什麼是Nginx代理服務? nginx正向代理和反向代理的實例

相关文章推荐:

Nginx如何实现跨域访问?Nginx跨域访问的实现

Nginx作为静态资源web服务来控制浏览器缓存以及实现防盗链

Nginx作为静态资源web服务并进行静态资源压缩

以上是什麼是Nginx代理服務? nginx正向代理和反向代理的實例的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn