服务器搭建nginx转发到kod云盘


docker上安装nginx:

docker pull nginx

关闭可道云,也就是apache的80端口,以为nginx也是80端口冲突了。

systemctl start httpd
systemctl enable httpd (加入开机自启)
systemctl stop httpd   #关闭
2、创建nginx文件夹
    cd /mydata
    mkdir nginx
3、随便启动一个nginx实例,只是为了复制出配置
    docker run -p 80:80 --name nginx -d nginx:1.10
4、将nginx容器内的配置文件拷贝到当前目录(当前目录在/mydata,此处运行一下命令):
【别忘了后面的点】
    docker container cp nginx:/etc/nginx .
5、终止原容器:docker stop nginx
6、删除原容器:docker rm nginx
7、修改当前nginx文件名字为conf:mv nginx conf
8、创建nginx文件夹:mkdir nginx
9、移动conf到nginx文件夹中:mv conf nginx/
10、创建新的nginx容器:
docker run -p 80:80 --name nginx \
-v /mydata/nginx/html:/usr/share/nginx/html \
-v /mydata/nginx/logs:/var/log/nginx \
-v /mydata/nginx/conf:/etc/nginx \
-d nginx:1.10

=============================================

配置待完成

现在有 apache 和nginx ,都是80端口。更改apache为 81:

找到配置文件:

 find / -name 'httpd.conf'

vim 然后搜索Listen ,然后更改端口:

systemctl start httpd  启动apache 
==============================
kod 用81端口成功访问。
================================
现在配置 nginx 从80端口转给81。

 

换了个端口。

server {
    listen       80;
    server_name  ****;

    location ^~ /kod/ {
        proxy_pass  http://****:***;
    }


    location / {
 #       root   /usr/share/nginx/html;
  #      index  index.html index.htm;
        proxy_pass http://www.baidu.com;
    }
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}

=============================

配置能访问了, 但是有些东西加载不出来

配置跨域:

nginx 配置location的时候,加:
set
$cors_origin $http_origin;
 add_header Access-Control-Allow-Origin *;
  add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';

========================

2022.4.16

虽然配置了跨域,。但是问题依然没有解决。暂时不知道为什么配置的跨域没有生效。

今天看到一篇不错的博客文章:https://www.jb51.net/article/149173.htm

Docker容器运行的时候有 host 、 bridge 、 none 三种网络可供配置,所以启动的时候可以指定docker里面的nginx用和宿主机一样的网络。默认是桥接,也就是bridge。

但是如果指定了,就相当于没有docker, 直接在Linux下装了nginx,这样的话其实也还行。

想了下,以后docker就装mysql,redis,es,kibana之类的。服务和nginx 都跑在linux上,不用docker跑。

nginx监听80端口,服务器就暴露80端口,加服务就到nginx中配置。

----------删除docker的nginx :

其实命令也简单,这里简单记录一下:
先停掉nginx容器
docker stop nginx
在删除容器,docker rm nginx
然后删除镜像:
docker rmi nginx 

在linux上直接安装nginx, 不通过docker。

安装nginx 教程:https://blog.csdn.net/qq_34228868/article/details/104461338

然后配置。,。。配置好之后,发现还是得配置跨域。

而且如果是proxy_pass 到 本机localhost或者写127.0.0.1 的时候,其实是不能使用的。这样就代理到了用户的本机上。

不知道怎么使用才能代理到 服务器的本机上。

看来还是得开启其他端口。

但是通过nginx代理的话, 别人访问就看不到我开启的哪个端口提供的服务。

其实这样也挺好的。

配置跨域的时候。哪个 add_header 之类的语句,我发现要写在proxy_pass 那一行的后面,不然没有效果。。。