您好,登錄后才能下訂單哦!
本篇內容主要講解“Nginx反向代理轉發Apache的配置”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Nginx反向代理轉發Apache的配置”吧!
方案一:
將域名解析指向測試服務器的地址;
開放相關端口訪問權限;
方案二:
將域名解析指向內網測試服務器的某一臺;(也方便用于測試https證書問題)
由該臺服務器轉發服務到相應需要的測試服務器;
開發本臺測試服務器及轉發的測試服務器的端口權限;
最初,我們使用***種方案,但是每次都要麻煩好幾組的同事一起處理,才能搞定,因此啟用了方案二。開了一臺中轉服務器,搭建nginx服務,指向了我們當前測試的一臺服務器,其間,遇到的問題。運維同事沒時間,交給我們自己來搞。好嘛,遇到問題了。
問題1、無法找到相應項目問題?
因為nginx只負責將請求轉發到該臺機器的80或其他端口上了,并沒有仔細配置,因此無法找到對應的項目。 解決:在apache 中添加相應vhost配置,示例如下:
DocumentRoot /www/web/madmin/public_html#ServerName admin.123.com#ServerAlias 10.8.0.1ServerName 192.168.1.212ErrorDocument 400 /errpage/400.htmlErrorDocument 403 /errpage/403.htmlErrorDocument 404 /errpage/404.html#php_admin_value open_basedir /www/web/madmin:/tmpDeflateCompressionLevel 7AddOutputFilterByType DEFLATE text/html text/plain text/xml application/x-httpd-phpAddOutputFilter DEFLATE css js html htm gif jpg png bmp phpOptions FollowSymLinksAllowOverride AllOrder allow,denyAllow from all
這樣,服務器就能正常解析項目了。
問題2、轉發過來后,客戶端ip獲取不到了,得到的只是一個代理服務器ip。
因為涉及到轉發,所有的東西都是可能丟掉的,在這里,就需要將原始IP轉發過來,如下:
upstream apache { server 127.0.0.1:80; keepalive 8;}upstream k_api { server 172.17.0.27:8080; keepalive 8;}server { listen 8091; server_name admin.123.com; location /api { proxy_pass http://k_api; proxy_set_header Host $host; #域名轉發 proxy_redirect off; proxy_set_header X-Real-IP $remote_addr; #IP轉發 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_connect_timeout 60; proxy_read_timeout 600; proxy_send_timeout 600; } location / { proxy_pass http://apache/h6/; #轉發到服務器后,加相對目錄地址 proxy_set_header Host $host; proxy_redirect off; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_connect_timeout 60; proxy_read_timeout 600; proxy_send_timeout 600; }}
問題3、使用nginx代理后,一直無法登錄,經排查為cookie無法保存?
這個問題困擾了我很久,也找了運維同事請教了很久,始終無法解決。最終,花了很多時間去找資料,自己做了許多嘗試,終于發現了。 原來是服務器時間差的問題,nginx服務器的時區設置為 EST,apache服務器的時區設置是 CST,其時區相差8小時。
所以cookie無效了。具體原理就是,登錄后會在apache所在服務器設置cookie,有效期為1小時內有效,而轉到nginx后,時間卻往前了8小時,因此服務器(或者是客戶認為)會認為該cookie是過期的,因此不會被保存起來了。
解決:更改nginx時區和時間,和apache一致。修改時間時區的命令如下:
#修改時間date -s 12:12:12 # 時間改為了 12:12:12date -s 20170112 # 日期更改為2017/01/12date -s ”12:12:12 2017-01-00“ # 時間改為了2017-01-00 12:12:12#修改時區tzselect #根據提示修改成相應時區
問題4、監聽端口問題?
根據需要設置監聽相應端口,注意端口不能沖突了!
到此,相信大家對“Nginx反向代理轉發Apache的配置”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。