Dejell
Dejell

Reputation: 14317

Cannot access Flask with apache

I have a linux server which I am running my flask app on it like this:

flask run --host=0.0.0.0

Inside the server I can access it like this:

curl http://0.0.0.0:5000/photo (and I am getting a valid response)

However, when I am trying to access it outside the server:

http://my_ip:5000/photo - the connection is refused.

The same ip, will return an image saved on public_html with apache2 configured

http://my_ip/public_html/apple-touch-icon-144x144-precomposed.png

Upvotes: 0

Views: 426

Answers (2)

Andrejs Cainikovs
Andrejs Cainikovs

Reputation: 28424

I have a suspicion you have a firewall on your Linux machine that is blocking port 5000.

Solution 1:

Open the relevant port on your firewall.

Solution 2:

I would suggest you to install nginx as a web proxy and configure it so that http://my_ip/photo would forward traffic to and from http://127.0.0.1:5000/photo:

server {
    listen 80;

    location /photo {
        proxy_pass http://127.0.0.1:5000/photo;
    }
}

Upvotes: 0

MortenB
MortenB

Reputation: 3529

I use this simple snippet to get the ip-address from the interface

import socket    
def get_ip_address():
        """ get ip-address of interface being used """
        s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
        s.connect(("8.8.8.8", 80))
        return s.getsockname()[0]

IP = get_ip_address()

And in main:

if __name__ == '__main__':
    app.run(host=IP, port=PORT, debug=False)

And running:

./app.py
 * Running on http://10.2.0.41:1443/ (Press CTRL+C to quit)

Upvotes: 1

Related Questions