0
点赞
收藏
分享

微信扫一扫

第五十章 Unity Input Manager 输入系统(上)

英乐 2023-05-12 阅读 63

使用Nginx做反向代理

文章目录

代理HTTP请求

按照以下步骤使用Nginx做反向代理:

  1. 编辑 Nginx 的配置文件。默认情况下,Nginx 的配置文件位于 /etc/nginx/nginx.conf

    sudo nano /etc/nginx/nginx.conf
    
  2. 在配置文件中的 http 段中添加以下内容:

    server {
       listen 80;
       server_name yourdomain.com;
       location / {
          proxy_pass http://localhost:8102;
          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_set_header X-Forwarded-Proto $scheme;
       }
    }
    

    请将 yourdomain.com 替换为你的域名或服务器 IP。

    以上配置会将来自端口为 80 的请求转发到本地的端口为 8102 的服务上。

    如果没有域名的话,可以直接将配置文件内容改为下面的

    server {
    	listen 80;
    	location / {
      	proxy_pass http://localhost:8102;
    	}
    }
    

    这里的 proxy_pass 用来设置要代理的应用程序的地址,这里设置为本地的 http://localhost:8102,也可以设置为其他 IP 地址和端口。这样就可以将流量转发到要代理的应用程序上了。

  3. 检查 Nginx 配置文件语法是否正确。

    sudo nginx -t
    
  4. 如果语法正确,则重新加载 Nginx 配置文件。

    sudo systemctl reload nginx
    
  5. 现在,你可以通过访问你的域名 http://yourdomain.com或者你主机的IP地址http://xxx.xxx.xxx.xxx 来访问你的服务了。


代理HTTPS请求

如果是代理HTTPS 请求的话上面的步骤可以忽略了,按照以下方式进行配置HTTPS的反向代理:

  1. 首先,确保你的服务器上已经安装了 SSL 证书,并已经配置了 HTTPS 监听器。这里不再赘述。
  1. 编辑 Nginx 配置文件 /etc/nginx/sites-available/default
    在修改配置文件前先备份一下配置文件,防止修改错误后无法恢复: cp /etc/nginx/sites-available/default /etc/nginx/sites-available/default.bak
    然后在命令行中输入vim /etc/nginx/sites-available/default,进入vim编辑器编辑下面的内容

    server {
        listen 80;
        server_name example.com;
        return 301 https://$server_name$request_uri;
    }
    
    server {
        listen 443 ssl;
        server_name example.com;
    
        ssl_certificate /path/to/ssl/cert.pem;
        ssl_certificate_key /path/to/ssl/key.pem;
    
        location / {
            proxy_pass http://127.0.0.1:8102;
            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_redirect off;
            proxy_buffering off;
        }
    }
    

这是一个 Nginx 配置文件的示例,用于将 HTTP 和 HTTPS 请求转发到本地的 8102 端口上。

第一个 server 块监听 80 端口,如果请求的是 example.com,则返回一个 301 重定向到 HTTPS 协议。$server_name 变量表示 server_name 指令设置的主机名,$request_uri 变量表示请求的 URI。

第二个 server 块监听 443 端口,使用 SSL 协议进行加密通信。ssl_certificate 和 ssl_certificate_key 指令分别指定 SSL 证书和私钥的路径,用于对客户端和服务器之间的通信进行加密。

location 块定义了一个请求的 URI 到本地服务的映射关系。proxy_pass 指令将请求转发到 127.0.0.1:8102,即本地的 8102 端口上。proxy_set_header 指令设置了一些 HTTP 头信息,例如 Host 头和 X-Real-IP 头,用于将请求头信息传递给后端的服务。proxy_redirect、proxy_buffering 指令分别用于关闭重定向和缓存。

  1. 检查 Nginx 配置文件语法是否正确。

    sudo nginx -t
    
  2. 如果没有错误,重启 Nginx 服务:在命令行中输入

    sudo systemctl restart nginx
    

这个配置将会将 HTTPS 请求通过 Nginx 反向代理到本地的 http://127.0.0.1:8102 端口,同时将请求头中的 HostX-Real-IPX-Forwarded-For 值设置为当前请求的值。proxy_redirect off 表示禁用 Nginx 默认的代理重定向行为,proxy_buffering off 表示关闭 Nginx 对响应内容的缓冲。

举个大栗子

比如我的域名为:data.zenytech.xyz, 将使用Nginx实现代理https的请求

  • 先备份一份配置文件, 防止出错

    root@myserver:~# cd /etc/nginx/sites-available/
    root@myserver:/etc/nginx/sites-available# ls
    default
    root@myserver:/etc/nginx/sites-available# cp default default.bak
    root@myserver:/etc/nginx/sites-available# ls
    default  default.bak
    root@myserver:/etc/nginx/sites-available# vim default
    
  • default文件修改如下:

    server {
            listen 80;
            server_name data.zenytech.xyz;
            return 301 https://$server_name$request_uri;
    }
         
         
    server {
            listen 443 ssl;
            server_name data.zenytech.xyz;
            
         location / {
            proxy_pass http://127.0.0.1:8102;
            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_redirect off;
            proxy_buffering off;
        }
        
        ssl_certificate /etc/letsencrypt/live/data.zenytech.xyz/fullchain.pem; # managed by Certbot
        ssl_certificate_key /etc/letsencrypt/live/data.zenytech.xyz/privkey.pem; # managed by Certbot
        include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
        ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
    }
     
    server {
        if ($host = data.zenytech.xyz) {
            return 301 https://$host$request_uri;
        } # managed by Certbot
    
            listen 80 ;
            listen [::]:80 ;
        server_name data.zenytech.xyz;
        return 404; # managed by Certbot
    }
    

当用户请求data.zenytech.xyz时,第一个server block会将请求重定向到https。第二个server block监听443端口,配置SSL证书,同时将请求代理到本地的8102端口。第三个server block是由Certbot管理的,用于重定向所有HTTP请求到HTTPS。因此,这个配置允许用户通过data.zenytech.xyz访问我的服务,并使用SSL保护其安全性。

  • 最后重启一下Nginx的服务即可。
    请添加图片描述
举报

相关推荐

0 条评论