服务器搭建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 那一行的后面,不然没有效果。。。