apache搭建静态网站,moongoose搭建网站后台,出现的跨域问题解决

1,问题描述

1.1,当网页和后台是不同服务时会产生跨域问题

Access to XMLHttpRequest at ‘http://ubuntu:9607/login’ from origin ‘http://www.anweimian.com’ has been blocked by CORS policy: Response to preflight request doesn’t pass access control check: No ‘Access-Control-Allow-Origin’ header is present on the requested resource.
在这里插入图片描述

1.2,跨域问题

同源策略会导致跨域问题
所谓"同源"指的是"三个相同"。
	协议相同
	域名相同
	端口相同

http://www.example.com/dir2/other.html:同源
http://example.com/dir/other.html:不同源(域名不同)
http://v2.www.example.com/dir/other.html:不同源(域名不同)
http://www.example.com:81/dir/other.html:不同源(端口不同)

2,nginx端口转发解决跨域问题

2.1,下载并安装nginx

https://nginx.org/en/download.html
在这里插入图片描述

2.1.1,解压后如下所示

在这里插入图片描述

2.1.2,进入解压目录后,执行配置脚本

./configure
HTTP rewrite 模块需要 PCRE 库的支持

在这里插入图片描述

sudo apt-get install libpcre3-dev
安装好PCRE 库后再次执行 ./configure

在这里插入图片描述

2.2,编译安装

sudo make -j
sudo make install

2.3,nginx使用

2.3.1,设置nginx开机自启动

vim /etc/rc.local
文本底部追加
/usr/local/nginx/sbin/nginx

2.3.2,修改配置文件配置端口转发

 /usr/local/nginx/conf/nginx.conf

在这里插入图片描述

2.3.3,启动nginx

sudo /usr/local/nginx/sbin/nginx

2.3.4,发现由于80端口被apache占用了,nginx无法启动

在这里插入图片描述

2.3.5,直接关闭apache,使用nginx托管静态网站代码

sudo /etc/init.d/apache2 stop

在这里插入图片描述

#重启nginx
sudo /usr/local/nginx/sbin/nginx -s reload

3,更新动态IP到nginx配置文件

#!/usr/bin/bash
# 为 win 设置 wsl host
# win hosts 文件路径
# 获取 wsl2 的 ip
wsl_ip=$(ifconfig eth0 | grep -w inet | awk '{print $2}')

CHANGE_HOST()
{
        HOST_NAME=$1
        HOST_IP=$2
    win_hosts_path="/mnt/c/Windows/System32/drivers/etc/hosts"

        # 判断是否已存在 wsl2 的域名,如果存在则修改,否则追加
        if grep -wq "$HOST_NAME" $win_hosts_path
        then
                # 此处因为权限问题没有直接用 sed 修改 hosts 文件
                win_hosts=$(sed -s "s/.* $HOST_NAME/$HOST_IP $HOST_NAME/g" $win_hosts_path)
                echo "$win_hosts" > $win_hosts_path
        else
                echo "$HOST_IP $HOST_NAME" >> $win_hosts_path
        fi
}

CHANGE_NGINX_HOST_BY_PORT()
{
        SERVER_PORT=$1
        HOST_IP=$2

        nginx_config_path="/usr/local/nginx/conf/nginx.conf"
        # 判断是否已存在 wsl2 的域名,如果存在则修改,否则追加
        if grep -wq "proxy_pass\|$SERVER_PORT" $nginx_config_path
        then
            # 此处因为权限问题没有直接用 sed 修改 hosts 文件
            nginx_conf=$(sed -s "s/.*proxy_pass.*http:\/\/.*:$SERVER_PORT;/         proxy_pass http:\/\/$HOST_IP:$SERVER_PORT/g" $nginx_config_path)
            echo "$nginx_conf" > $nginx_config_path
        else
            echo "$SERVER_PORT is not in $nginx_conf"
        fi
}

CHANGE_HOST "www.anweimian.com" $wsl_ip
CHANGE_HOST "ubuntu" $wsl_ip


CHANGE_NGINX_HOST_BY_PORT "9607" $wsl_ip
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值