Apache-2.2
NGINX 埠代理不工作
我正在努力做到這一點,而不是輸入“www.example.com:8080”,而是輸入“www.example.com”。我正在使用 NGINX,但我似乎無法讓它工作。我在網上找到了許多有用的文章,他們都說要做我嘗試過但不起作用的相同事情。
我在 ubuntu apache2 伺服器上執行
這是我所做的:
- sudo 進入位於 /etc/nginx/site-enabled/default 的配置文件
- 上面寫著聽 80 的地方,把它改成聽 8080
- sudo 服務 nginx 重啟
但是,這似乎沒有任何效果。
預設
# You may add here your # server { # listen 80; # server_name graychat.net; # location / { # proxy_pass http://127.0.0.1:8080; # } # } # statements for each of your virtual hosts to this file ## # You should look at the following URL's in order to grasp a solid understanding # of Nginx configuration files in order to fully unleash the power of Nginx. # http://wiki.nginx.org/Pitfalls # http://wiki.nginx.org/QuickStart # http://wiki.nginx.org/Configuration # # Generally, you will want to move this file somewhere, and start with a clean # file but keep this around for reference. Or just disable in sites-enabled. # # Please see /usr/share/doc/nginx-doc/examples/ for more detailed examples. ## server { listen 8080 default_server; listen [::]:8080 default_server ipv6only=on; root /usr/share/nginx/html; index index.html index.htm; # Make site accessible from http://localhost/ server_name localhost; location / { # First attempt to serve request as file, then # as directory, then fall back to displaying a 404. try_files $uri $uri/ =404; # Uncomment to enable naxsi on this location # include /etc/nginx/naxsi.rules } # Only for nginx-naxsi used with nginx-naxsi-ui : process denied requests #location /RequestDenied { # proxy_pass http://127.0.0.1:8080; #} #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # #error_page 500 502 503 504 /50x.html; #location = /50x.html { # root /usr/share/nginx/html; #} # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # #location ~ \.php$ { # fastcgi_split_path_info ^(.+\.php)(/.+)$; # # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini # # # With php5-cgi alone: # fastcgi_pass 127.0.0.1:9000; # # With php5-fpm: # fastcgi_pass unix:/var/run/php5-fpm.sock; # fastcgi_index index.php; # include fastcgi_params; #} # deny access to .htaccess files, if Apache's document root # concurs with nginx's one # #location ~ /\.ht { # deny all; #} } # another virtual host using mix of IP-, name-, and port-based configuration # #server { # listen 8000; # listen somename:8080; # server_name somename alias another.alias; # root html; # index index.html index.htm; # # location / { # try_files $uri $uri/ =404; # } #} # HTTPS server # #server { # listen 443; # server_name localhost; # # root html; # index index.html index.htm; # # ssl on; # ssl_certificate cert.pem; # ssl_certificate_key cert.key; # # ssl_session_timeout 5m; # # ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2; # ssl_ciphers "HIGH:!aNULL:!MD5 or HIGH:!aNULL:!MD5:!3DES"; # ssl_prefer_server_ciphers on; # # location / { # try_files $uri $uri/ =404; # } #}
我對上面的預設配置文件進行了以下編輯並重新啟動,但它似乎仍然不起作用
server { listen 80 default_server; listen [::]:80 default_server ipv6only=on; root /usr/share/nginx/html; index index.html index.htm; # Make site accessible from http://localhost/ server_name localhost; location / { proxy_pass 127.0.0.1:8080; # First attempt to serve request as file, then # as directory, then fall back to displaying a 404. # try_files $uri $uri/ =404; # Uncomment to enable naxsi on this location # include /etc/nginx/naxsi.rules } .... }
—已解決的問題—
我的配置文件沒有任何問題。當我查閱 /var/log/nginx/error.log 時,我看到了錯誤
[emerg]: bind() to 0.0.0.0:80 failed (98: Address already in use)
所以我執行了以下命令:
sudo fuser -k 80/tcp service nginx start
一切正常:)
你把它倒過來了。
埠 80 是預設的 HTTP 埠,因此鍵入
www.example.com
與鍵入相同www.example.com:80
將您的 listen 指令改回
listen 80;
,確保您以 root 身份啟動 nginx 並且該埠沒有在防火牆中被阻止,您應該很好。如果您的後端應用程序已經在偵聽埠 8080,您想告訴 nginx 將請求路由到該地址。
location / { proxy_pass http://127.0.0.1:8080; }
這樣,當請求從 80 埠進入時,nginx 會將其發送到埠 8080 上的應用程序,該應用程序會將響應返回給 nginx - 然後將其返回給從未在任何地方看到埠 8080 的使用者。