Docker搭建nginx
- 拉取鏡像
docker pull nginx
-
文件目錄
- 啟動基礎容器用于資源拷貝
docker run -d --name=nginx01 nginx
- 創建本地目錄,用于存放Nginx的相關文件信息.
# mkdir -p ~/nginx/logs ~/nginx/conf ~/nginx/conf/conf.d ~/nginx/www
- www: 目錄將映射為 nginx 容器配置的虛擬目錄。
- logs: 目錄將映射為 nginx 容器的日志目錄。
- conf: 目錄里的配置文件將映射為 nginx 容器的配置文件。
日志文件位置:/var/log/nginx 配置文件位置: /etc/nginx 資源存放的位置: /usr/share/nginx/html
- 拷貝配置文件
docker cp [容器id]:/etc/nginx ./conf
?``` cd ~/nginx/conf #nginx.conf文件復制到conf目錄下 docker cp nginx01:/etc/nginx/nginx.conf nginx.conf #把容器中的default.conf文件復制到conf目錄下 docker cp nginx01:/etc/nginx/conf.d/default.conf ~/nginx/conf/conf.d #刪除鏡像 docker rm -f nginx01 ?```
-
部署命令
docker run --rm -d -p 80:80 --name proxy_nginx \ -v ~/nginx/www:/usr/share/nginx/html \ -v ~/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \ -v ~/nginx/logs:/var/log/nginx \ nginx
-
修改default.conf文件
server { listen 80; #監聽的端口 server_name www.一級域名.com; #監聽的URL location / { proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://127.0.0.1:6666;#這里寫需要轉發的地址 } } server { listen 80; #監聽的端口 server_name web.一級域名.com; #監聽的URL location / { proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://127.0.0.1:8082;#這里寫需要轉發的地址 } } server { listen 80; #監聽的端口 server_name api.一級域名.com; #監聽的URL location / { proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://127.0.0.1:9999;#這里寫需要轉發的地址 } }
https
運行nginx代理
docker run --detach \
--restart always \
--name proxy_nginx \
-p 443:443\
-p 80:80 \
-v /root/nginx/data:/usr/share/nginx/html:rw\
-v /root/nginx/conf/nginx.conf:/etc/nginx/nginx.conf/:rw\
-v /root/nginx/conf/conf.d/default.conf:/etc/nginx/conf.d/default.conf:rw\
-v /root/nginx/logs:/var/log/nginx/:rw\
-v /root/nginx/ssl:/ssl/:rw\
-d nginx
修改default.conf文件
server {
listen 80; #監聽的端口
listen 443 ssl;
server_name www.defult.com; #監聽的URL
# 增加ssl
#ssl on; #如果強制HTTPs訪問,這行要打開
ssl_certificate /ssl/www.defult.com.pem;
ssl_certificate_key /ssl/www.defult.com.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
# 指定密碼為openssl支持的格式
ssl_protocols SSLv2 SSLv3 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5; # 密碼加密方式
ssl_prefer_server_ciphers on; # 依賴SSLv3和TLSv1協議的服務器密碼將優先于客戶端密碼
location / {
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:8090;#這里寫需要轉發的地址
}
}
強制https
server {
listen 80;
server_name www.defult.com;
rewrite ^(.*)$ https://${server_name}$1 permanent;
}
server {
listen 443 ssl;
server_name www.defult.com; #監聽的URL
# 增加ssl
#ssl on; #如果強制HTTPs訪問,這行要打開
ssl_certificate /ssl/www.defult.com.pem;
ssl_certificate_key /ssl/www.defult.com.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
# 指定密碼為openssl支持的格式
ssl_protocols SSLv2 SSLv3 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5; # 密碼加密方式
ssl_prefer_server_ciphers on; # 依賴SSLv3和TLSv1協議的服務器密碼將優先于客戶端密碼
location / {
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:8090;#這里寫需要轉發的地址
}
}