Nginx解决跨域问题
问题描述:后端在本机127.0.0.1:9090端口开展服务,但是前端不在本机部署,访问出现跨域问题无法解决。
安装Nginx并配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| # Step1: 下载编译工具和库文件 yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel
# Step2: 安装PCRE # 下载 cd /usr/local/src/ wget http://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz # 解压 tar zxvf pcre-8.35.tar.gz # 进入目录 cd pcre-8.35 # 编译安装 ./configure make && make install # 查看版本无误 pcre-config --version
# Step3: 安装Nginx # 下载 cd /usr/local/src/ wget https://nginx.org/download/nginx-1.20.2.tar.gz # 解压安装包 tar zxvf nginx-1.20.2.tar.gz # 进入安装目录 cd nginx-1.20.2 # 编译安装 ./configure --prefix=/usr/local/webserver/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre=/usr/local/src/pcre-8.35
make make install # 查看Nginx版本 /usr/local/webserver/nginx/sbin/nginx -v
|
配置Nginx的文件
实现:将9091端口跨域请求放通,映射本机9090端口
1
| vim /usr/local/webserver/nginx/conf/nginx.conf
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
| #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; server { listen 9091; server_name localhost; location /api { root html; index index.html index.htm; add_header Access-Control-Allow-Origin *; add_header Access-Control-Allow-Methods 'GET, POST, 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; } proxy_pass http://127.0.0.1:9090; } } }
|
检查配置文件并启动
1 2 3 4 5 6 7 8
| # 检查文件正确性 /usr/local/webserver/nginx/sbin/nginx -t # 启动 /usr/local/webserver/nginx/sbin/nginx # /usr/local/webserver/nginx/sbin/nginx -s reload # 重新载入配置文件 /usr/local/webserver/nginx/sbin/nginx -s reopen # 重启 Nginx /usr/local/webserver/nginx/sbin/nginx -s stop # 停止 Nginx
|