如何用nginx解決前端部署跨域問題
該方法是在云服務(wù)器上【ubuntu18.04】源碼編譯nginx,【另外一種直接用apt下載】
源碼編譯安裝
- 下載
wget http://nginx.org/download/nginx-1.19.0.tar.gz sudo tar zxf nginx-1.19.0.tar.gz
- 安裝依賴軟件
sudo apt install -y gcc make libpcre3 libpcre3-dev zlib1g zlib1g-dev openss
- 編譯
cd nginx-1.19.0/ sudo ./configure sudo make sudo make install
得到以下結(jié)果,編譯安裝成功

命令
/usr/local/nginx/sbin/nginx是個可執(zhí)行文件,是nginx的main process
cd /usr/local/nginx/sbin ./nginx -v //查看版本號 ./nginx //啟動nginx ./nginx -s stop //停止nginx ./nginx -s quit //安全退出 ./nginx -s reload //重新加載配置文件【常用】 ps aux|grep nginx 查看nginx進程
前端部署反向代理配置
/usr/local/nginx/conf 文件下的nginx.config是配置文件
nginx.config文件主要有全局塊,events塊,http塊。主要在http塊配置
sudo vim /usr/local/nginx/conf/nginx.config
找到http塊下的server塊,修改類似于如下代碼塊,即能完成反向代理配置。
server {
listen 80; #監(jiān)聽端口
server_name localhost; #可以改成自己的域名或者ip
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root dist; # 前端build文件所在位置與/usr/local/nginx/conf平級
index index.html index.htm; #入口文件
try_files $uri $uri/ /index.html; #好像可以解決history路由,不過我用的hash
}
location /shadow/api { # 這個就是代碼中的想要訪問的baseurl
proxy_pass http://1.13.xxx.xxx:80; # [例如]反向代理的服務(wù)器真正的ip
add_header 'Access-Control-Allow-Origin' '*'; #允許來自所有的訪問地址
add_header 'Access-Control-Allow-Credentials' 'true';
add_header 'Access-Control-Allow-Methods' 'GET, PUT, POST, DELETE, OPTIONS'; #支持請求方式
add_header 'Access-Control-Allow-Headers' 'Content-Type,*';
}
}保存只會用命令進行配置重新加載
sudo /usr/local/nginx/sbin/nginx -s reload
效果
如果build正確,并且配置生效,直接在瀏覽器訪問【xxx.xxx.xxx.xxx:80】能夠看到前端頁面,括號里面是云服務(wù)器的ip,進入自己租的云服務(wù)器界面復(fù)制,比如騰訊云在下圖這里復(fù)制。

不是配置的反向代理的ip
以上例子的反向代理ip是http://1.13.xxx.xxx:80
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Nginx服務(wù)器高性能優(yōu)化的配置方法小結(jié)
這篇文章主要介紹了Nginx服務(wù)器高性能優(yōu)化的配置方法小結(jié),包括一些內(nèi)核參數(shù)的優(yōu)化介紹,需要的朋友可以參考下2015-12-12
利用nginx與ffmpeg搭建流媒體服務(wù)器過程詳解
這篇文章主要給大家介紹了利用nginx與ffmpeg搭建流媒體服務(wù)器的全過程,文中介紹的很詳細,對大家具有一定的參考價值,需要的朋友們下面來一起看看吧。2017-03-03

