NGINX工做遇到的問題

早前在WINDOWS和LINUX都使用過NGINX,只是作作代理而已,只要成功也就沒管了。來到新公司後全部服務器都是用的WINDOWS(確實驚着我了,後來要求他們必須所有用LINUX),由於程序都已經上線等諸多緣由也沒辦法所有都換成LINUX,慢慢發現了性能和使用的問題。nginx

1.鏈接數不夠用,在nginx的logs/error.log中會有以下錯誤提示windows

    maximum number of descriptors supported by select() is 1024服務器

    粗略百度以後修改了worker_connections和worker_rlimit_nofile參數,實測並無什麼用。後來在官網上找到這麼一段:網絡

    原來windows版本是不支持高併發的,拿來學習用是能夠的。想要作高併發必須得使用LINUX併發

2.工做進程只有一個高併發

    WINDOWS服務器上NGINX的配置不管是多少個進程,雖然啓動後是啓動了多個進程,但實際上只有一個進程在工做。關於這一點是我在網上看到後摘抄下來的,並無驗證過。性能

3.epoll是多路複用是無法使用的學習

    如題以後,簡單的總結就是NGINX不適用在WINDOWS服務器上使用(簡單粗暴,歡迎拍磚)。測試

4.NGINX代理以後重定向地址並非代理地址,而是真實地址代理

    使用NGINX代理AUTH2的認證服務器以後,重定向的地址是真實地址,而真實地址是不能被外網訪問到的,通過搜索找到的答案是設置以下內容:

        location /nginx01 {
                #該值會影響從請求中獲取到的URL部分,URI不會受到影響。經過NGINX代理後獲取到的地址可能會是真實地址,但
                #是重定向是沒法經過外網直接訪問真實端口的,因此須要經過此屬性指定其值
                proxy_set_header Host 127.0.0.1:80;
                proxy_pass   http://127.0.0.1:8080;
                #該值會影響從響應中獲取URL,默認是NGINX的URL
                #proxy_redirect http://127.0.0.1:8080  http://127.0.0.1:80;
        }

        proxy_set_header 參數能夠修改重定向時生成URL

        如圖:

        第一行爲URL,第二行爲URI。能夠看出得到的URL並非http://127.0.0.1:8080而是http://127.0.0.1。這樣就能夠保證重定向的地址在網絡限制的狀況下能夠被正常的訪問了。

        proxy_redirect 參數和本次問題無關,網上說若是不設置該參數,在響應(response)中能夠看到真實地址,我使用的NGINX FOR WINDOWS 1.15.5測試並無出現這個問題,默認都是NGINX服務器的地址。不過設置了該參數是能夠改變響應(response)中的URL的

        如圖:

        

        默認值確實就是NGINX服務器的URL,並沒出現網上說的默認會給出真實地址,也許是我NGINX版本問題,這個問題我沒有深究。有興趣的朋友能夠試試低版本會不會出現網上說的問題。

相關文章
相關標籤/搜索