歡迎您來到潮人地東莞seo博客,本站專業免費分享多元化的seo網站優化技術干貨以及解答seo各種常見問題的博客網站

熱門關鍵詞: seo優化 seo推廣 seo技術 seo博客 seo網站推廣怎么做 seo怎么做 新手做seo怎么做
當前位置:seo博客首頁 > seo技術分享 >

seo技術:如何實現docker容器域名綁定?,服務器綁定域名分享教程

發布時間:2023-08-14 12:56:01 文章出處:潮人地東莞seo博客 作者:東莞seo博客 閱讀數量:

潮人地東莞seo博客小編下面跟大家分享關于seo技術:如何實現docker容器域名綁定?,服務器綁定域名分享教程等問題,希望seo專員在做seo優化的過程中有所幫助,內容僅供參考。

docker容器域名綁定

你如果說站在一個黑客的角度來看,域名要不要問題不大,因為ping一下基本就出來了。確實,但是我們寫的網站都是面向用戶的,如果你這兒直接是個ip用戶多少會覺得怪異。于是本著強迫癥的心里,我花了大概一天的時間反復對著服務器鞭尸,終于找了解決問題的關鍵—— nginx。

2.為什么問題的關鍵變成了nginx?

你如果有時間可以看看我這個探索的過程,時間緊迫可以直接跳過。看了好多文章發現問題的根本還是這個nginx的配置不太明白,于是想了個方法,在寶塔面板里面有nginx的配置方法,用的是GUI,點兩下就行,只要找到對應的nginx的conf配置文件文件就行:

seo技術:如何實現docker容器域名綁定?,服務器綁定域名分享教程

seo博客相關推薦閱讀:網站優化seo:seo搜索引擎介紹是怎樣?(從8個方面全面分析SEO是怎樣)

首先用GUI配置一下https域名訪問:

開啟訪問如下:

好的現在域名https解析配置好了:

接下來就是分析:

接下來可能你想說,懂了,那我就在docker里面搞一個nginx,然后將這個nginx的配置文件給復制進去,建立相關的文件夾,然后把需要用到的ssl的公鑰和私鑰以及必要的日志打印文件給建好,畢竟在沒有寶塔面板的情況下配個域名和https訪問也不至于不能實現。雖然過程可能有些痛苦,但理論上可行。很遺憾地告訴你,這其實是一個錯誤的思路, 除了過于復雜外,還違背了docker的初衷。

docker本來就是想 輕量化,我其實按照這個思路嘗試過,由于自己Linux指令不熟以及對nginx不是很了解,因此還是比較痛苦的,并且我發現進入nginx容器的內部環境,前面也說過這里面其實就是一個小的Linux環境,為了節省內存開銷和提供資源重用性,docker去掉了很多傳統Linux鏡像具有的功能,例如 vim等基礎工具包,還需要自己下載,為了編輯文件下載這個然后刪除(且不說刪除方法的問題),屬實太麻煩了。

其實,是有更好的解決方法的,雖然容器與服務器主機之間貌似沒有多余的交互,除了一個端口映射外,其實是可以使用文件映射的。因為這篇主要是針對應用的,所以很多理論知識就先不談。其實是可以將我們下載的nginx的配置文件直接映射到使用服務器主機上的nginx的配置文件。之所以使用docker,主要還是防止版本等的沖突造成項目部署出現“奇奇怪怪”的問題。但是即使軟件(nginx)更新了,軟件也不至于會影響前一個版本的配置(使用方式)。一般情況下,都是提高軟件本身的性能和穩定性。

按照上面的這個方法,就需要首先找到nginx在服務上的配置文件的具體位置了。找的話比較好找,進入nginx軟件下面找nginx.conf文件就行:

咱也不多說了,這里存在最大的問題是,直接將nginx文件映射之后,由于我服務器使用的centos鏡像,docker里面由于考慮到輕量化,只保留了核心,很多輔助功能被拋棄了,也就導致了存在服務器文件和docker容器的Linux文件不匹配,簡單來說就是一個容器其實運行在一個輕量化的Linux環境中,你把服務器中的配置文件復制進去之后,配置文件可能還有相互引入,這樣換了環境直接寄,根本找不到引入的文件。你可能想說我都引入,十分復雜。所以,還是得搞明白nginx在網站運行時到底干了些什么。

3.簡單聊聊nginx

如果你的時間充裕,推薦去看一下 B站狂神說給的40分鐘左右的教程,開個倍速了解一下比較快,通俗易懂。簡單來說 nginx基于C語言開發,速度快,支持5萬并發(Tomcat不到1000),可以用來配置負載均衡、反向代理、動靜結合。我的理解如下:

(1)負載均衡:由于網絡用戶逐漸龐大,因此很多廠商實際使用多臺服務器,nginx充當服務器的代理,將流量按照需要“平均分配”(有時候需要結合不同服務器的性能給不同權重)給這些服務器。對于session不同服務器的共享,雖然這個代理能插一手,但是由于性能等原因一般還是選擇使用redis;

(2)反向代理:首先要明白正向代理,正向代理指代理在客戶端出現,“健康上網”就是一種(前端的代理也算),反向代理指的是在服務器上面代理,服務器為了提高性能讓別人幫著處理;也正是代理的強大,所以高并發通常會有他的影子,可以不斷地延伸,利用多個子級nginx將流量壓力給抵消掉,也就是構建一個服務器集群。

(3)動靜結合:其實就是靜態資源緩存在nginx這樣就不用再去服務器請求了,因為這個很經打,這樣能夠減少站在它后面瑟瑟發抖的服務器的壓力。

這里貼一篇講得比較完整的文章吧:超級詳細的nginx講解

4.首先給主站點配置域名

為了方便更好地說明問題,我這里重新做人,把服務器上面的nginx先給卸載了:

首先,為了安全起見,先隨便開一個容器,將容器里面的nginx相關文件從容器復制到服務器中:

docker run --name=nginx -d -p 80:80 nginx

在服務器中創建用來映射的文件目錄,文件映射最好是使用文件夾,因為后面我們可能需要在原映射的基礎上新增其他配置,使用文件能夠提高擴展性,官方也是這么推薦的:

mkdir -p /data/nginx

將阿里云中的文件導出用于備份(防止文件缺損)( cp 容器名:容器中的路徑 備份出來的服務器路徑):

docker cp nginx:/etc/nginx/nginx.conf /data/nginx/nginx.conf docker cp nginx:/etc/nginx/conf.d/ /data/nginx/ docker cp nginx:/usr/share/nginx/html/ /data/nginx/ docker cp nginx:/var/log/nginx/ /data/nginx/

為了由于緩存產生不必要的誤會,我這里直接換瀏覽器訪問,確保nginx能夠正常使用(也就是我們拷貝出來的文件有效):

接下來就是比較關鍵的一步了,刪除容器,利用服務器上面的文件重新構建文件映射關系:

docker run --name=nginx -d -p 80:80-p 443:443-v /data/nginx/html:/usr/share/nginx/html -v /data/nginx/nginx.conf:/etc/nginx/nginx.conf -v /data/nginx/conf.d/:/etc/nginx/conf.d/ -v /data/nginx/nginx/:/var/log/nginx/nginx

對上面的指令做出如下幾點解釋:

(1) -p 80:80 -p 443:443,由于需要使用https和域名訪問,所以需要額外增加443端口的映射;

(2) -d,nginx是后臺代理,需要長期運行;

(3) -v

/data/nginx/html:/usr/share/nginx/html映射nginx的 html頁面(主要是默認頁和報錯頁);

(4) -v

/data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf,映射niginx的配置頁;

(5) -v

/data/nginx/conf.d/:/etc/nginx/conf.d/,映射nginx的擴展配置頁;

(6) -v

/data/nginx/logs:/var/log/nginx,映射nginx的日志文件。

最終得到的效果如下:

接下來,簡單說一下nginx的配置文件的意思:

usernginx; #指定系統用戶,這里使用的是nginx創建的用戶組worker_processesauto;#定義nginx對外提供web服務時的進程數error_log/var/log/nginx/error.log notice;#錯誤日志信息存儲位置pid/var/run/nginx.pid;#進程控制塊events{ worker_connections1024;#進程同時打開的貴州省關鍵詞seo排名最大連接數} http{ include/etc/nginx/mime.types;#支持的類型,這個可以聯想一下nodeJS里面的那個第三方依賴default_typeapplication/octet-stream;#默認類型log_formatmain '$remote_addr- $remote_user[$time_local] "$request" ''$status$body_bytes_sent"$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';#日志格式access_log/var/log/nginx/access.log main;#訪問日志sendfileon;#開啟文件發送功能#tcp_nopush on;keepalive_timeout65;#長連接過期時間#gzip on;include/etc/nginx/conf.d/*.conf;#這個非常重要,引入conf.d下面的全部.conf后綴的配置文件}

官方給了一個默認的配置文件( default.conf):

server{ listen80; listen[::]:80; server_namelocalhost; location/ { #這里其實是一個攔截器root/usr/share/nginx/html; #站點位置,這里需要使用容器里面的路徑而不是服務器,因為最終容器環境對因為Linux環境indexindex.html index.htm; #知道php應該的都懂,這里是默認展示的頁面配置} #報錯頁面處理error_page500502503504/50x.html; location= /50x.html { root/usr/share/nginx/html; } }

好嘞,咱接下來直接配置域名訪問。如果你之前也是使用的寶塔面板,那么恭喜你,你只需要把阿里云證書文件夾( cert)找到復制到 /data/nginx/conf.d目錄下(為什么放在這兒?因為這個映射的時候使用的是目錄,而且挨著配置文件最近,方便修改),如果不是的話你得去阿里云重新下載,然后新建文件夾,把證書放進去,也不難的:

如果你不信,可以進入容器查看,舉例如下:

這里把修改之后的文件放在下面供大家參考(基本上你只需要 修改域名和域名對應的證書,因為我這里其實沒有部署任何站點,特別強調證書的路徑是 /etc/nginx/conf.d,不是 /data/nginx/conf.d,容器最終跑的位置是在docker提供的Linux環境中):

server{ listen80; listen443ssl http2; server_namenightowl.top; location/ { root/usr/share/nginx/html; indexindex.html index.htm; } if($server_port!~ 443){ rewrite^(/.*)$https://$host$1permanent; } ssl_certificate/etc/nginx/conf.d/cert/nightowl.top/fullchain.pem; ssl_certificate_key/etc/nginx/conf.d/cert/nightowl.top/privkey.pem; ssl_protocolsTLSv1.2TLSv1.3; ssl_ciphersEECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5; ssl_prefer_server_ciphersoff; ssl_session_cacheshared:SSL:10m; ssl_session_timeout10m; add_headerStrict-Transport-Security "max-age=31536000"; }

誒,跑不了,不保熟是吧?

這里還需要一步調整,將docker對應的nginx容器的配置修改一下(這里是參考了大佬的文章),修改方法如下:

(1)定制運行docker服務, systemctl stop docker;

(2)在服務器中找到容器的配置文件, /var/lib/docker/容器ID/hostconfig.json;

(3)編輯,找到 "PortBindings":{"80/tcp":[{"HostIp":"","HostPort":"80"}]]},替換成如下json配置項:

"PortBindings":{ "80/tcp":[{ "HostIp":"","HostPort":"80"}],"443/tcp":[{ "HostIp":"","HostPort":"443"}]},

(4)重啟docker服務, systemctl start docker,然后重新運行容器。

成功效果如下:

最后直接快速還賬:

直接給出路由轉發思路的nginx配置如下:

server{ listen443ssl http2; # listen 80;server_namevisualization.admin.nightowl.top; if($server_port!~ 443){ rewrite^(/.*)$https://$host$1permanent; } ssl_certiseo怎么提高關鍵詞排名外包ficate/etc/nginx/conf.d/cert/visualization.admin.nightowl.top/fullchain.pem; ssl_certificate_key/etc/nginx/conf.d/cert/visualization.admin.nightowl.top/privkey.pem; ssl_protocolsTLSv1.1TLSv1.2TLSv1.3; ssl_ciphersEECDH+CHACHA20:EECDH+CHA網站做seo一直沒排名CHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5; ssl_prefer_server_cipherson; ssl_session_cacheshared:SSL:10m; ssl_session_timeout10m; add_headerStrict-Transport-Security "max-age=31536000"; error_page497https://$host$request_uri; location/ { proxy_passhttp://8.136.14.176:88/; proxy_set_headerHost $host:$server_port; proxy_set_headerX-Real-IP $remote_addr; proxy_set_headerX-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_headerREMOTE-HOST $remote_addr; add_headerX-Cache $upstream_cache_status; proxy_connect_timeout30s; proxy_read_timeout86400s; proxy_send_timeout30s; proxy_http_version1.1; proxy_set_headerUpgrade $http_upgrade; proxy_set_headerConnection "upgrade"; } }

以上是潮人地東莞seo博客跟大家分享關于seo技術:如何實現docker容器域名綁定?,服務器綁定域名分享教程等問題,希望能對大家有所幫助,若有不足之處,請諒解,我們大家可以一起討論關于網站seo優化排名的技巧,一起學習,以上內容僅供參考。

閱讀全文
本文標題"seo技術:如何實現docker容器域名綁定?,服務器綁定域名分享教程":http://www.420113.com/jsfx_24801.html
本文版權歸潮人地seo博客所有,歡迎轉載,但未經作者同意必須在文章頁面給出原文連接,否則保留追究法律責任的權利。
標簽:
合作伙伴
主站蜘蛛池模板: 中文字幕乱码无码人妻系列蜜桃 | 97免费人妻无码视频| 人妻少妇精品无码专区漫画| 麻豆人妻少妇精品无码专区| 成人无码AV一区二区| 亚洲精品无码永久在线观看男男| 无码人妻一区二区三区免费视频 | 午夜人性色福利无码视频在线观看 | 久久久久久人妻无码| 潮喷大喷水系列无码久久精品| 中国少妇无码专区| 国产精品久久无码一区二区三区网| 日本爆乳j罩杯无码视频| 国产做无码视频在线观看| 精品三级AV无码一区| 日韩精品无码久久久久久| 日韩少妇无码喷潮系列一二三 | 内射精品无码中文字幕| 无码精品国产VA在线观看| 一级毛片中出无码| 99久无码中文字幕一本久道| 亚洲综合无码一区二区| 高清无码视频直接看| 国产a v无码专区亚洲av| 狼人无码精华AV午夜精品| 亚洲AV无码精品国产成人| 无码精品尤物一区二区三区| 少妇无码一区二区三区| 亚洲AV无码精品色午夜果冻不卡| 免费a级毛片无码a∨免费软件| 亚洲精品无码专区2| 国产av无码专区亚洲av毛片搜| AAA级久久久精品无码片| 中文字幕无码人妻AAA片| 东京热av人妻无码专区| 亚洲精品无码99在线观看| 久久亚洲精品无码播放| 国产精品无码v在线观看| 国产亚洲精久久久久久无码77777| 国产成人AV无码精品| 国产精品无码无在线观看|