接着上一篇(安装完docker 和 SQL server 之后, 为了可以在服务器上build, 那个dotnet 也需要装上)
1.自定义网络:
docker network ls docker network create --subnet 192.168.0.0/16 --gateway 192.168.0.1 mynet docker run --name mynginx -p 80:80 -p 443:443 -d --net mynet -v /nginxdata:/usr/share/nginx -v /ngnixconf:/etc/nginx/conf.d2/ nginx
在Linux 系统下,放 /nginxdata/html/index.html,公网IP 可以访问到nginx 了, 这里放公司 主页。
原来docker 的 /etc/nginx/conf.d/ 下有default.conf。 我们不用这个。
修改 nginx 的根配置。
在宿主机中:docker cp mynginx:/etc/nginx/nginx.conf /
编辑之后(修改最后一行的include 路径),执行:docker cp /nginx.conf mynginx:/etc/nginx/nginx.conf
在 /ngnixconf 中添加 a.conf 文件: 这里的一个Server 大概相当于IIS的一个站点
server { listen 443 ssl; #SSL协议访问端口号为443。此处如未添加ssl,可能会造成Nginx无法启动。 server_name ryrkj.com; #将localhost修改为您证书绑定的域名,例如:www.example.com。 ssl_certificate /usr/share/nginx/5153330_ryrkj.com.pem; #将domain name.pem替换成您证书的文件名。 ssl_certificate_key /usr/share/nginx/5153330_ryrkj.com.key; #将domain name.key替换成您证书的密钥文件名。 ssl_session_timeout 5m; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; #使用此加密套件。 ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #使用该协议进行配置。 ssl_prefer_server_ciphers on; location / { root /usr/share/nginx/html; # 静态站点的文件路径 index index.html index.htm; # 默认文档 } }
root与alias主要区别在于nginx如何解释location后面的uri,这会使两者分别以不同的方式将请求映射到服务器文件上。 root的处理结果是:root路径+location路径 alias的处理结果是:使用alias路径替换location路径 alias是一个目录别名的定义,root则是最上层目录的定义。 还有一个重要的区别是alias后面必须要用“/”结束,否则会找不到文件的。。。而root则可有可无~~ root实例: location ^~ /t/ { root /www/root/html/; } location ^~ /t/ { root /www/root/html/; } 如果一个请求的URI是/t/a.html时,web服务器将会返回服务器上的/www/root/html/t/a.html的文件。 alias实例: location ^~ /t/ { alias /www/root/html/new_t/; } location ^~ /t/ { alias /www/root/html/new_t/; } 如果一个请求的URI是/t/a.html时,web服务器将会返回服务器上的/www/root/html/new_t/a.html的文件。注意这里是new_t,因为alias会把location后面配置的路径丢弃掉,把当前匹配到的目录指向到指定的目录。 注意: 1. 使用alias时,目录名后面一定要加"/"。 3. alias在使用正则匹配时,必须捕捉要匹配的内容并在指定的内容处使用。 4. alias只能位于location块中。(root可以不放在location中)
添加 rewrite.conf 文件:
server { listen 80; rewrite ^(.*)$ https://$host$1; location / { index index.html index.htm; } }
进入docker ,nginx -s reload
https/http 都可以正常访问。