Nginx代理前后端分离项目配置

本文详细介绍了如何在Nginx中配置HTTPS,包括证书的使用、SSL协议的选择、加密套件的设置以及如何配置代理转发,适用于视频网站等需要加密连接的场景。

#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       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  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;




    # another virtual host using mix of IP-, name-, and port-based configuration
    #
    #server {
    #    listen       8000;
    #    listen       somename:8080;
    #    server_name  somename  alias  another.alias;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}


    # HTTPS server
    #  修改部分====================================================
   server {
		listen       443 ssl;
		server_name  video.lidongeco.com;#域名
		ssl                  on;
		ssl_certificate      D:/nginx-1.17.9/nginx-1.17.9/nginx-1.17.9/ssl/3593946_video.lidongeco.com.pem;#证书路径
		ssl_certificate_key   D:/nginx-1.17.9/nginx-1.17.9/nginx-1.17.9/ssl/3593946_video.lidongeco.com.key;#证书路径
		ssl_session_timeout  5m;
		ssl_protocols TLSv1 TLSv1.1 TLSv1.2 ;
		ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
		ssl_prefer_server_ciphers   on;
		
		location / {
             #前端项目端口号
            proxy_pass https://127.0.0.1:8082;
            
			}
		#微信小程序配置JGKvvjQIb3.txt文件是小程序中下载下来的,放置路径如下
		location /JGKvvjQIb3.txt {
			alias D:/nginx-1.17.9/nginx-1.17.9/nginx-1.17.9/JGKvvjQIb3.txt;
		}
		 location /websocket/ {
			# websocket路径下的请求转发给真正的后端服务器
			proxy_pass https://192.168.xxx.xx:8096;
			proxy_set_header Host $host:$server_port;
			proxy_set_header Remote_Addr $remote_addr;
			proxy_set_header X-Real-IP $remote_addr;
			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
			proxy_http_version 1.1;
			proxy_set_header Upgrade $http_upgrade;
			proxy_set_header Connection "upgrade";
		}	
		location /api/ {
			#  项目中/api 路径下的访问都是访问后端接口,请求转发给真正的后端服务器
			proxy_pass https://192.168.xxx.xx:8096;
			
		}
		location /static/ {
			# 静态资源请求转发给真正的后端服务器
			proxy_pass https://192.168.xxx.xxx:8096;
			
		}			
		
	}
	  #  修改部分====================================================	

}

### 配置方法 #### 基础配置示例 下面是一个基础的 Nginx 配置示例,用于实现前后端分离服务的代理: ```nginx server { listen 80; server_name localhost; # 前端静态资源代理 location / { root /path/to/frontend/dist; # 前端项目打包后的静态资源目录 index index.html; } # 后端接口代理 location /api/ { proxy_pass http://127.0.0.1:9080; # 后端服务地址 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } ``` 在这个配置中,Nginx 监听 80 端口。对于根路径 `/` 的请求,Nginx 会将其指向前端项目打包后的静态资源目录,并返回 `index.html` 文件。而对于以 `/api/` 开头的请求,Nginx 会将其代理到后端服务地址 `http://127.0.0.1:9080`,同时设置一些必要的请求头信息,以便后端服务器获取客户端的真实 IP 等信息。 #### 允许跨域配置前后端服务部署在不同的域名或端口时,可能会遇到跨域问题。可以通过在 Nginx 配置中添加跨域相关的响应头来解决: ```nginx server { listen 80; server_name localhost; location / { root /path/to/frontend/dist; index index.html; } location /api/ { proxy_pass http://127.0.0.1:9080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # 允许跨域请求 add_header Access-Control-Allow-Origin *; add_header Access-Control-Allow-Methods 'GET, POST, PUT, DELETE, OPTIONS'; add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization'; if ($request_method = 'OPTIONS') { return 204; } } } ``` 上述配置中,通过 `add_header` 指令添加了跨域相关的响应头,允许所有来源的请求,并支持常见的 HTTP 请求方法。对于 `OPTIONS` 请求,直接返回 204 状态码。 ### 注意事项 - **路径匹配**:在配置 `location` 块时,要注意路径的匹配规则。例如,`location /api/` 会匹配以 `/api/` 开头的所有请求,而 `location = /api` 则只会精确匹配 `/api` 这个路径。 - **请求头设置**:在代理后端服务时,要确保正确设置请求头信息,如 `Host`、`X-Real-IP` 和 `X-Forwarded-For` 等,以便后端服务器能够获取客户端的真实信息。 - **跨域问题**:如果前后端服务存在跨域情况,需要在 Nginx 配置中添加跨域相关的响应头,或者在后端服务中进行相应的跨域处理。 - **错误处理**:可以在 Nginx 配置中添加错误处理规则,如 `error_page` 指令,以便在出现错误时返回合适的错误页面。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值