轻松上手:Nginx服务器反向代理配置指南

接上一篇《轻松上手:Nginx服务器基础配置指南》后,我们来探讨一下Nginx反向代理配置具体实现是怎么样的。

让我看看Nginx配置的一些核心代码 ❤️‍

location /apis {
	rewrite         ^.+apis/?(.*)$ /$1 break;
	add_header      Access-Control-Allow-Origin *;
	add_header      Access-Control-Allow-Headers "Accept, X-Token, Content-Type, token";
	add_header      Access-Control-Allow-Methods "GET, POST, DELETE, PATCH, PUT, OPTIONS";
	proxy_pass      http://your-proxy-server;
}
  1. rewrite 表示对请求地址进行重写,因为一般我们在配置nginx的时候,默认路径都会给到我们的静态资源服务,那么Restful API就需要有一个代理字段来区分请求地址,在nginx接收到请求以后,会根据规则进行请求代理和请求转发。其中[^.+apis/?(.*)$ /$1]表示它匹配任何以apis/开头(apis/后面的斜杠是可选的)的URL路径,并将匹配到的部分(即apis/后面的所有内容)重写为新的请求URI。
  2. Access-Control-Allow-Origin 添加响应头Access-Control-Allow-Origin,其值为*,表示接受来自任何域的跨域请求,当然我们的*也可以设置为具体的域名或则IP地址,表示只允许这个地址的请求访问,否则视为跨域。
  3. Access-Control-Allow-Headers 服务器接受哪些HTTP头部作为跨域请求的一部分。在这个例子中,它允许Accept、X-Token、Content-Type和token这几个头部。这对于需要发送自定义头部信息的跨域请求很重要,避免攻击方提交非法数据到后端。
  4. Access-Control-Allow-Methods 服务器允许哪些HTTP方法用于跨域请求。在这个例子中,它允许GET、POST、DELETE、PATCH、PUT和OPTIONS这些方法。
  5. proxy_pass 将请求转发到指定的代理服务器(在这个例子中是http://your-proxy-server)。这意味着Nginx不会直接处理这些请求,而是将它们转发到另一个服务器进行处理。your-proxy-server应该被替换为实际的代理服务器地址和端口(如果需要的话)。

一个完整的包含静态服务器和反向代理的配置代码如下

worker_processes  1;
events {
    worker_connections  1024;
}


http {
    include              mime.types;
    # 如果Nginx无法识别文件的类型,它会将其作为二进制流发送给客户端
    default_type         application/octet-stream;
    # Nginx会利用操作系统的sendfile()函数来发送文件,这通常比传统的读取文件到用户空间内存,然后再写入到套接字的方式要高效得多
    sendfile             on;
    # 设置了长连接的超时时间,单位为秒
    keepalive_timeout    500;
    # 启用或禁用gzip压缩
    gzip                 on;
    # 配置我们的服务器属性
	server {
        # 我们的服务器端口为80端口
        listen       80;
        # 我们设置的服务器域名为localhost
        server_name  localhost;
        # 静态页面配置
		location / {
			root   /home/work/your-project-dir;
            index  index.html;
        }
        # 代理配置
        location /apis {
			rewrite         ^.+apis/?(.*)$ /$1 break;
			add_header      Access-Control-Allow-Origin *;
			add_header      Access-Control-Allow-Headers "Accept, X-Token, Content-Type, token";
			add_header      Access-Control-Allow-Methods "GET, POST, DELETE, PATCH, PUT, OPTIONS";
			proxy_pass      http://your-proxy-server;
		}
    }
}

配置好文件以后,一定要记得测试配置文件和重启Nginx服务哦,如果不知道怎么操作,请移步 《轻松上手:Nginx服务器基础配置指南》。

如果需要 HTTPS 支持或更多高级功能,关注我!!

Nginx配置文件来这里领取(Nginx-Config: nginx配置文件仓库)

你可能感兴趣的:(Nginx,服务器,nginx,运维)